如何在Polars DataFrame中按列首行值逐元素进行除法运算?
Polars实现列值相对于首行的转换
核心解法
通过Polars表达式获取每列首行值,再对列内所有元素执行除法运算即可得到目标结果。Polars中除法可直接用/运算符,或调用div()方法(你寻找的divide方法对应Polars里的div())。
完整代码示例
import polars as pl # 初始化示例DataFrame df = pl.DataFrame({'a':[3,3,3],'b':[6,6,9]}) # 方式一:使用除法运算符 result = df.with_columns( (pl.col("*") / pl.col("*").first()).cast(pl.Float32) ) # 方式二:使用div()方法 # result = df.with_columns( # pl.col("*").div(pl.col("*").first()).cast(pl.Float32) # ) print(result)
代码说明
pl.col("*"):选中所有列,若仅需处理指定列,可替换为列名列表(如["a", "b"])pl.col("*").first():获取每列的第一个元素,Polars会自动将该值广播至整列参与运算/或div():两种方式均实现除法操作,功能完全等价.cast(pl.Float32):将整数结果转换为Float32类型,与示例输出的类型匹配
输出结果
shape: (3, 2) ┌─────┬─────┐ │ a ┆ b │ │ --- ┆ --- │ │ f32 ┆ f32 │ ╞═════╪═════╡ │ 1.0 ┆ 1.0 │ │ 1.0 ┆ 1.0 │ │ 1.0 ┆ 1.5 │ └─────┴─────┘
内容的提问来源于stack exchange,提问作者chriss
相关产品推荐
相关产品推荐

