Polars 索引操作指南

Polars 的 DataFrame 不包含索引,这确保了索引行为的一致性,无需使用类似 df.loc, df.ilocdf.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总结包含了原网页中的主要概念和代码示例,以便于快速理解和参考。更多详细信息和高级用法,请访问原网页