如何在Polars DataFrame中计算指定列列表的行均值?
如何计算Polars DataFrame指定列的行均值?
要计算指定列的行均值,你需要使用Polars中行方向的聚合函数,而非默认的列方向聚合。以下是两种可行方案:
方案1:使用pl.mean_horizontal
这是Polars专门用于行方向均值计算的函数,直接传入目标列名列表即可:
df = pl.DataFrame({ 'a':[1,2,3], 'b':[4,5,6], 'c':[7,8,9] }) cols_to_mean = ['a','c'] # 添加行均值列 result = df.with_columns(row_mean=pl.mean_horizontal(cols_to_mean)) print(result)
输出结果:
shape: (3, 4) ┌─────┬─────┬─────┬──────────┐ │ a ┆ b ┆ c ┆ row_mean │ │ --- ┆ --- ┆ --- ┆ --- │ │ i64 ┆ i64 ┆ i64 ┆ f64 │ ╞═════╪═════╪═════╪══════════╡ │ 1 ┆ 4 ┆ 7 ┆ 4.0 │ │ 2 ┆ 5 ┆ 8 ┆ 5.0 │ │ 3 ┆ 6 ┆ 9 ┆ 6.0 │ └─────┴─────┴─────┴──────────┘
方案2:使用row_mean()方法(Polars 0.17.0+)
针对列表达式,你可以直接调用row_mean()方法实现行方向均值:
result = df.with_columns(row_mean=pl.col(cols_to_mean).row_mean())
为什么之前的方法出错?
pl.col(cols_to_mean).mean()默认是列方向聚合,计算的是每列自身的平均值,因此返回单行结果;pl.mean(pl.col(cols_to_mean).mean())逻辑错误,pl.col(cols_to_mean).mean()已经是列的均值(标量或单列),再嵌套pl.mean不仅无意义,还会因参数类型不匹配抛出错误。
内容的提问来源于stack exchange,提问作者Paul Fleming
相关产品推荐
相关产品推荐

