使用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
相关产品推荐
相关产品推荐

