如何使用Pandas合并CSV文件中指定行的多列数据
可行实现方案
方案1:Python Pandas实现(推荐,处理效率最高)
62000行数据全程处理耗时低于1秒,完全匹配你之前的操作效率要求,代码示例如下:
import pandas as pd # 读取CSV,统一转字符串格式避免ID、Parent列出现科学计数法或格式错乱 df = pd.read_csv("你的源文件路径.csv", dtype=str) # 按Name、Parent分组,Data列去重后用逗号拼接 group_df = df.groupby(["Name", "Parent"], as_index=False)["Data"].agg( lambda x: ",".join(pd.unique(x)) ) # 生成符合规则的新行 new_rows = group_df.rename(columns={"Parent": "ID"}) new_rows["Parent"] = "" # 合并原表和新行,输出结果 result_df = pd.concat([df, new_rows], ignore_index=True) result_df.to_csv("处理后的结果.csv", index=False, encoding="utf-8-sig")
如果你的Data列本身包含逗号,可修改agg逻辑对单个Data值加引号包裹,避免后续CSV解析错乱。
方案2:Excel Power Query实现(无需写代码)
适合没有Python环境的场景,操作步骤如下:
- 打开Excel,点击「数据」选项卡-「从文本/CSV」,导入你的源CSV文件,选择加载到Power Query编辑器
- 按住Ctrl选中Name、Parent两列,点击「分组依据」,设置:
- 新列名:临时表
- 操作:所有行
- 点击「添加列」-「自定义列」,输入公式:
Text.Combine(List.Distinct(Table.Column([临时表], "Data")), ",") - 删除多余的「临时表」列,将Parent列重命名为ID,再新增一列命名为Parent,值留空
- 点击「主页」-「追加查询」,选择将当前生成的新行表追加到原始表中
- 最后点击「关闭并上载」,导出为CSV即可,全流程耗时在5秒以内
内容的提问来源于stack exchange,提问作者user17026550
相关产品推荐
相关产品推荐

