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

如何用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)

代码说明

  1. 分组聚合逻辑:agg()方法通过元组指定每列的处理规则,避免了重复键覆盖的问题;
    • 对C列使用lambda x: ', '.join(x)实现同组字符串拼接
    • 对E列直接调用内置'sum'函数完成求和
  2. 列名调整:聚合时直接指定输出列名,最后调整列顺序匹配需求格式
  3. 导出设置: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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 03:23:16