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

使用Pandas分组聚合sum()时如何避免字符串拼接?

解决pandas分组sum导致字符串拼接的问题

当使用pd.groupby(['col_1','col_2']).sum()时,字符串/分类类型列会被直接拼接,这是因为pandas对字符串类型的sum方法默认行为就是拼接字符。要避免这种情况,可通过以下几种方式处理:

  • 针对不同列指定专属聚合函数:使用agg()方法为分类列和数值列分别设置合适的聚合逻辑,比如保留每组第一个/最后一个分类值、统计分类值数量等:

    # 示例:col_3取每组第一个值,数值列col_4求和
    df.groupby(['col_1','col_2']).agg({'col_3': 'first', 'col_4': 'sum'})
    

    常用的分类列聚合选项:

    • 'first':保留每组第一条记录的分类值
    • 'last':保留每组最后一条记录的分类值
    • 'count':统计每组分类值的条数
    • 'nunique':统计每组不同分类值的数量
  • 将分类列聚合为列表:如果需要保留每组所有分类值,可通过lambda函数将值收集为列表,避免拼接:

    df.groupby(['col_1','col_2']).agg({'col_3': lambda x: list(x), 'col_4': 'sum'})
    
  • 提前筛选列:如果只需要对数值列求和,分组前先筛选出目标数值列,避免包含分类列:

    # 仅对col_4求和,不处理col_3
    df[['col_1','col_2','col_4']].groupby(['col_1','col_2']).sum()
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 02:55:57