如何用Pandas实现按列分组、列值逗号拼接及求和并导出CSV
Pandas分组拼接列值与计算列总和实现方案
原始数据集
A,B,C,D,E 12345,0,California,0,5.00 12345,0,Florida,0,2.00 67898,0,Rhode Island,0,1.00 67898,0,North Carolina,0,3.50 44444,0,Alaska,0,6.00 44444,0,Texas,0,3.50
需求说明
按列A分组,完成两项操作:
- 将每组的列
C值用逗号拼接 - 计算每组列
E的总和
最终导出为指定格式的CSV文件。
错误尝试代码
import pandas as pd df = pd.read_csv('data.csv') out = df.groupby('A', as_index=False, sort=False).agg({'C':'sum', 'C':'first'}) out.to_csv('out.csv')
问题:字典中重复的键
'C'会被最后一个值'first'覆盖,仅保留每组第一个C值;同时完全未处理E列求和需求,无法达到预期效果。
正确实现代码
import pandas as pd # 读取原始数据 df = pd.read_csv('data.csv') # 按A分组,执行拼接与求和操作 out_df = df.groupby('A', as_index=False, sort=False).agg( # 用逗号拼接同组的C列值 C=('C', lambda x: ', '.join(x)), # 计算同组E列的总和 E=('E', 'sum') ) # 调整列名与顺序以匹配需求输出 out_df.columns = ['A', 'C', 'E'] # 导出CSV,禁用默认索引列 out_df.to_csv('output.csv', index=False)
代码说明
- 分组聚合逻辑:
agg()方法通过元组指定每列的处理规则,避免了重复键覆盖的问题;- 对
C列使用lambda x: ', '.join(x)实现同组字符串拼接 - 对
E列直接调用内置'sum'函数完成求和
- 对
- 列名调整:聚合时直接指定输出列名,最后调整列顺序匹配需求格式
- 导出设置:
index=False避免导出时生成多余的默认索引列
运行后生成的CSV内容如下:
A,C,E 12345,California, Florida,7.0 67898,Rhode Island, North Carolina,4.5 44444,Alaska, Texas,9.5
内容的提问来源于stack exchange,提问作者Madrid Spain
相关产品推荐
相关产品推荐

