You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Polars表达式计算行均值?未找到pl.Expr.mean的axis参数

在Polars中计算行均值的方法

Polars里pl.Expr.mean()默认按列(纵向)计算聚合值,确实没有axis参数。要计算行均值,有几种实用的方法:

方法1:用pl.mean_horizontal(推荐)

这是Polars专门为横向(行维度)计算均值设计的函数,用法简单直接:

import polars as pl

df = pl.DataFrame({
    "foo": [1, 2, 3],
    "bar": [6, 7, 8],
})

# 计算所有列的行均值,新增为mean_col列
df = df.with_columns(pl.mean_horizontal(pl.all()).alias("mean_col"))
print(df)

运行后输出:

shape: (3, 3)
┌─────┬─────┬─────────┐
│ foo ┆ bar ┆ mean_col│
│ --- ┆ --- ┆ ---     │
│ i64 ┆ i64 ┆ f64     │
╞═════╪═════╪═════════╡
│ 1   ┆ 6   ┆ 3.5     │
│ 2   ┆ 7   ┆ 4.5     │
│ 3   ┆ 8   ┆ 5.5     │
└─────┴─────┴─────────┘

要是只需要计算特定列的行均值,把pl.all()换成列名列表就行:

df = df.with_columns(pl.mean_horizontal(["foo", "bar"]).alias("mean_col"))

方法2:用row方法逐行处理

如果需要自定义行计算逻辑,可以用row方法遍历每行,配合lambda函数算均值:

df = df.with_columns(
    pl.row(return_dtype=pl.Float64).map_elements(lambda x: sum(x)/len(x)).alias("mean_col")
)

不过这种方法性能不如第一种,数据量大的时候优先用pl.mean_horizontal。

方法3:直接用pl.Expr.mean(axis=1)(Polars 0.19.0+可用)

从Polars 0.19.0版本开始,pl.Expr.mean()新增了axis参数,现在可以直接这么写:

df = df.with_columns(pl.all().mean(axis=1).alias("mean_col"))

如果你的Polars版本比较老,建议升级后用这种更直观的写法。

内容的提问来源于stack exchange,提问作者Sigi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 22:40:29