Polars 索引操作指南
Polars 的 DataFrame 不包含索引,这确保了索引行为的一致性,无需使用类似 df.loc
, df.iloc
或 df.at
的操作。
1. 索引规则
索引规则取决于值的数据类型:
- 数值型
- axis 0: 行(row)
- axis 1: 列(column)
- 数值型 + 字符串
- axis 0: 行(只接收数字)
- axis 1: 列(接受数字+字符串值)
- 仅字符串
- axis 0: 列(column)
- axis 1: 报错(error)
- 表达式
- 所有表达式求值都是并行执行的
- axis 0: 列(column)
- axis 1: 列(column)
- …(以此类推)
2. 与 Pandas 的对比
以下是一些 Polars 与 Pandas 在索引操作上的对比示例:
- 选择列
- Pandas:
df.iloc[2]
- Polars:
df[2, :]
- 按索引选择几行
- Pandas:
df.iloc[[2, 5, 6]]
- Polars:
df[[2, 5, 6], :]
- 选择行的切片
- Pandas:
df.iloc[2:6]
- Polars:
df[2:6, :]
- 使用布尔掩码选择行
- Pandas:
df.iloc[True, True, False]
- Polars:
df[[True, True, False]]
- 按谓词条件选择行
- Pandas:
df.loc[df["A"] > 3]
- Polars:
df[df["A"] > 3]
- 选择列的切片
- Pandas:
df.iloc[:, 1:3]
- Polars:
df[:, 1:3]
- 按字符串顺序选择列的切片
- Pandas:
df.loc[:, "A":"Z"]
- Polars:
df[:, "A":"Z"]
- 选择单个值(标量)
- Pandas:
df.loc[2, "A"]
- Polars:
df[2, "A"]
3. 表达式
表达式也可以用于索引,这是 df.select
的语法糖。以下是一些示例:
df[[
pl.col("A").head(5), # 从“A”的首部开始获取
pl.col("B").tail(5).reverse(), # 以逆序的方式获取“B”的后部
pl.col("B").filter(pl.col("B") > 5).head(5), # 首先得到满足谓词的“B”
pl.sum("A").over("B").head(5) # 获取“A”在“B”组上的总和,并返回前5个
]]
这个Markdown总结包含了原网页中的主要概念和代码示例,以便于快速理解和参考。更多详细信息和高级用法,请访问原网页。