Polars执行groupby聚合时报Aggregation did not return a Series错误求助
报错根因说明
Any(ComputeError("Aggregation did not return a Series")) 本质是Polars执行聚合操作时,返回的结果类型不符合预期,无法转为标准Series结构导致的报错。
可行排查方向
- 先核对生产环境与本地的Polars版本是否一致,执行命令
pip show polars即可查看两端版本号。不同版本的Polars对聚合逻辑的校验规则存在差异,尤其是.unique()这类可能返回多值的聚合函数,版本兼容性问题是高频触发该报错的原因,可将生产环境Polars版本对齐到本地可正常运行的版本后再测试。 - 逐个注释聚合代码中的列逻辑,定位具体触发报错的列:比如先只保留
AchievedPercentage的聚合逻辑运行,再逐步添加其他列,确认是数值列的mean运算触发报错,还是日期列的unique运算触发报错。 - 检查生产环境从Dynamo读取的原始DataFrame数据:
- 是否存在
ReportId为空的行,空值分组的聚合逻辑容易出现非预期返回 - 是否存在某个
ReportId分组下,聚合列全为null的情况,CSV导出时部分空值会被默认转为空白字符串,和Dynamo直接读取的原生null类型在聚合时处理逻辑不同 - 若报错出现在带
.unique()的两列,可临时将.unique()替换为.first()测试,若运行正常则说明生产数据中存在某个ReportId分组下该列有多个不同值,.unique()返回的List类型和预期的单值类型不匹配触发报错。
- 是否存在
- 打印生产环境DataFrame的完整schema和前20行原始数据,和本地CSV读取的DataFrame逐字段对比,确认是否存在Dynamo嵌套类型未被正确解析、数值字段隐含字符串格式等和本地不一致的情况。
内容的提问来源于stack exchange,提问作者Ayena
相关产品推荐
相关产品推荐

