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

Pandas DataFrame按指定字段Group by分组保留列时报错求助

Pandas分组聚合报错解决方案

报错原因

你收到的TypeError: must be str, not int报错,核心原因是Take列存在混合数据类型,同一列下同时包含字符串和整数类型的值,执行first聚合操作时触发了类型校验冲突。

解决方案

因为你的需求中同一Location+Type分组下的Take值完全一致,最优方案是直接将Take列加入分组键,无需额外对Take执行聚合操作,代码如下:

df = df.groupby(['Location', 'Type', 'Take'], as_index=False)['Num'].sum()

如果你的实际场景中确实存在同一分组下Take值不同、需要取第一个值的情况,可以先统一Take列的数据类型后再执行聚合:

# 统一将Take列转为字符串类型
df['Take'] = df['Take'].astype(str)
# 执行原有聚合逻辑
df = df.groupby(['Location','Type'], as_index = False).agg({'Num':'sum','Take':'first'})

以上两种方案运行后均可得到你需要的预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 09:24:04