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

如何使用Polars API实现按行聚合操作(如sum、median等)

Polars 按行聚合实现方案

以下是对应你给出的Pandas示例的Polars实现方式:

1. 筛选行和大于5的记录

Polars中可以用pl.sum_horizontal()函数计算每行的总和,再结合filter()完成筛选:

import polars as pl

df = pl.DataFrame([[1, 2, 1], [4, 5, 3], [1, 8, 9]])

# 筛选行总和大于5的行
filtered_df = df.filter(pl.sum_horizontal(pl.all()) > 5)
print(filtered_df)
# 输出:
# shape: (2, 3)
# ┌─────┬─────┬─────┐
# │ 0   ┆ 1   ┆ 2   │
# │ --- ┆ --- ┆ --- │
# │ i64 ┆ i64 ┆ i64 │
# ╞═════╪═════╪═════╡
# │ 4   ┆ 5   ┆ 3   │
# │ 1   ┆ 8   ┆ 9   │
# └─────┴─────┴─────┘

2. 添加行中位数列

使用pl.median_horizontal()计算每行中位数,通过with_columns()新增列:

# 新增行中位数列
df_with_median = df.with_columns(median=pl.median_horizontal(pl.all()))
print(df_with_median)
# 输出:
# shape: (3, 4)
# ┌─────┬─────┬─────┬────────┐
# │ 0   ┆ 1   ┆ 2   ┆ median │
# │ --- ┆ --- ┆ --- ┆ ---    │
# │ i64 ┆ i64 ┆ i64 ┆ f64    │
# ╞═════╪═════╪═════╪════════╡
# │ 1   ┆ 2   ┆ 1   ┆ 1.0    │
# │ 4   ┆ 5   ┆ 3   ┆ 4.0    │
# │ 1   ┆ 8   ┆ 9   ┆ 8.0    │
# └─────┴─────┴─────┴────────┘

3. 行方向滚动窗口均值

Polars的滚动函数支持直接指定axis=1实现行方向计算,无需转置:

# 行方向窗口大小为3的滚动均值
rolling_df = df.with_columns(
    pl.all().rolling_mean(window_size=3, axis=1)
)
print(rolling_df)
# 输出:
# shape: (3, 3)
# ┌──────┬──────┬───────────┐
# │ 0    ┆ 1    ┆ 2         │
# │ ---  ┆ ---  ┆ ---       │
# │ f64  ┆ f64  ┆ f64       │
# ╞══════╪══════╪═══════════╡
# │ null ┆ null ┆ 1.333333   │
# │ null ┆ null ┆ 4.0        │
# │ null ┆ null ┆ 6.0        │
# └──────┴──────┴───────────┘

核心要点

  • 基础行聚合操作(求和、中位数等):使用Polars提供的*_horizontal系列函数,比如sum_horizontal、max_horizontal、median_horizontal,这些函数专门用于行方向的聚合计算。
  • 滚动类行操作:直接在列表达式上调用滚动方法(如rolling_mean)并指定axis=1即可,无需像Pandas那样转置处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 14:55:20