如何对Polars DataFrame中的所有行进行聚合操作?
在Polars中对所有行进行聚合操作的方法
如果要对Polars DataFrame的所有行做聚合(比如求某列的平均值),有几种简洁的实现方式:
1. 直接调用列的聚合方法(返回Series)
针对单列聚合,直接选中目标列后调用对应的聚合函数即可,比如求age列的平均值:
import polars as pl df = pl.DataFrame({ "first_name": ["Alice", "Bob", "Charlie", "Alice"], "age": [25, 30, 35, 28] }) # 获取age列的平均值,返回Series类型结果 avg_age = df["age"].mean() print(avg_age) # 输出:29.5
2. 使用select方法(返回DataFrame)
如果需要返回结构化的DataFrame结果,可以用select配合聚合表达式,还能自定义结果列名:
# 返回包含平均值的单行DataFrame result_df = df.select(pl.col("age").mean().alias("average_age")) print(result_df) # 输出: # shape: (1, 1) # ┌─────────────┐ # │ average_age │ # │ --- │ # │ f64 │ # ╞═════════════╡ # │ 29.5 │ # └─────────────┘
这种方式支持同时聚合多个列,比如同时求平均值和总行数:
multi_agg_df = df.select([ pl.col("age").mean().alias("average_age"), pl.col("age").count().alias("total_records") ]) print(multi_agg_df)
3. 全局分组后聚合(统一分组操作写法)
如果想和常规group_by分组聚合的写法保持一致,可以用无参数的group_by()(将所有行归为一组),再调用agg执行聚合:
grouped_result = df.group_by().agg(pl.col("age").mean().alias("average_age")) print(grouped_result) # 输出和select方法的结果一致
内容的提问来源于stack exchange,提问作者bwooster
相关产品推荐
相关产品推荐

