Polars中如何按ID分组计算单列求和与两列和的均值?
Polars实现分组聚合:单列求和 + 两列和的均值
直接用Polars的原生分组聚合API就能实现需求,代码简洁且性能更优:
import polars as pl result = df.group_by("id").agg( pl.col("m_1").sum().alias("m_1 sum"), (pl.col("m_7") + pl.col("m_8")).mean().alias("m_7_8 mean") )
说明:
你之前觉得pl.mean只能传列名字符串,其实它可以接收任意Polars表达式(比如两列相加的结果),这也是Polars表达式体系的灵活之处。具体实现逻辑:
- 先通过
group_by("id")完成分组操作,逻辑和Pandas一致 - 在
agg()方法中定义两个聚合规则:- 对
m_1列求和,用alias()给结果列指定别名 - 先计算
m_7与m_8的逐行和,再对这个临时计算结果求均值,最后用alias()命名结果列
- 对
这种写法是Polars推荐的原生用法,相比Pandas的apply模式,Polars会提前做查询优化,避免了遍历每组数据执行lambda逻辑的额外开销。
内容的提问来源于stack exchange,提问作者andy8203
相关产品推荐
相关产品推荐

