如何在Python Polars中用.eval()实现列表列与标量列的元素级运算?
在Polars中用
.eval()实现列表列与标量列的元素级运算 当然可以用Polars的.eval()方法实现这个需求,具体实现方式如下:
首先构造示例DataFrame:
import polars as pl df = pl.DataFrame({"list": [[2, 2, 2], [3, 3, 3]], "scalar": [1, 2]})
通过.eval()方法生成目标diff列:
result_df = df.with_columns( diff=pl.col("list").eval(pl.element() - pl.col("scalar")) ) print(result_df)
代码说明
pl.col("list").eval(...):针对list列的每个列表元素执行内部运算pl.element():指代当前列表中的单个元素pl.col("scalar"):自动匹配每行对应的标量值,实现逐行的元素级减法运算
执行后得到的结果如下:
shape: (2, 3) ┌───────────┬────────┬───────────┐ │ list ┆ scalar ┆ diff │ │ --- ┆ --- ┆ --- │ │ list[i64] ┆ i64 ┆ list[i64] │ ╞═══════════╪════════╪═══════════╡ │ [2, 2, 2] ┆ 1 ┆ [1, 1, 1] │ │ [3, 3, 3] ┆ 2 ┆ [1, 1, 1] │ └───────────┴────────┴───────────┘
内容的提问来源于stack exchange,提问作者Gianluca Rigoletti
相关产品推荐
相关产品推荐

