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

Polars中group_by用字典聚合求和报错,求解决方案

Polars分组聚合报TypeError的解决方法

问题原因

你遇到的TypeError: specifying aggregations as a dictionary is not supported错误,是因为Polars的agg方法不支持字典格式的聚合参数——这种写法是pandas的惯用方式,但Polars的API设计要求使用其专属的表达式语法传递聚合操作。

修正方案

有两种常用的正确写法可以实现你需要的分组求和:

方法1:使用列表达式+聚合函数

通过pl.col("value").sum()指定对value列求和,并用alias保持列名不变:

import polars as pl

df = pl.DataFrame({"category": ["A", "A", "B", "B", "B"],
"value": [1., 2., 3., 4., 5.]})

result = df.group_by("category").agg(pl.col("value").sum().alias("value"))
print(result)

方法2:直接用聚合函数指定列名

pl.sum可以直接接收列名作为参数,再通过alias指定输出列名:

result = df.group_by("category").agg(pl.sum("value").alias("value"))

运行结果

执行修正后的代码,会得到符合预期的分组求和结果:

┌──────────┬───────┐
│ category ┆ value │
│ ---      ┆ ---   │
│ str      ┆ f64   │
╞══════════╪═══════╡
│ A        ┆ 3.0   │
│ B        ┆ 12.0  │
└──────────┴───────┘

注:你预期结果里标注的list[f64]是错误的,分组求和后会得到单个f64值而非列表,上述输出是Polars的正确显示格式。

内容的提问来源于stack exchange,提问作者Jose Nuñez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 17:32:08