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

如何使用Python的pandas库合并ID编号相同的数据行

使用pandas合并同ID行的实现方案

基础实现(适合内存可加载的CSV文件)

核心逻辑是按ID列分组,对每个分组下的其他列做聚合,自动跳过空值、拼接同列的有效值,代码如下:

import pandas as pd

# 读取源CSV,指定ID列为字符串类型避免长ID精度丢失
df = pd.read_csv("你的源文件路径.csv", dtype={"ID": str})

# 分组聚合:同ID为一组,每列跳过空值,多个非重复有效值用逗号分隔
merged_result = df.groupby("ID", as_index=False).agg(
    lambda col: ",".join(col.dropna().astype(str).unique())
)

# 导出合并后的结果
merged_result.to_csv("合并后结果.csv", index=False, encoding="utf-8-sig")

参数说明

  • dtype={"ID": str}:如果你的ID是长数字格式(比如用户编号、订单号),必须加这个参数,否则pandas会把长数字转成科学计数法导致ID错乱
  • col.dropna():自动过滤每列中的空值,不会把空内容拼入最终结果
  • .unique():对同ID下同列的重复值去重,如果不需要去重直接删除该方法即可
  • encoding="utf-8-sig":导出的CSV用Excel打开不会出现中文乱码

大文件适配方案(内存不足以一次性加载全量文件)

如果CSV体积过大,可以用分块读取的方式降低内存峰值:

import pandas as pd

chunk_container = []
# 每次读取10万行,chunksize可根据本机内存大小调整
for chunk in pd.read_csv("你的源文件路径.csv", dtype={"ID": str}, chunksize=100000):
    chunk_container.append(chunk)

# 拼接所有分块后执行分组聚合
full_df = pd.concat(chunk_container, ignore_index=True)
merged_result = full_df.groupby("ID", as_index=False).agg(
    lambda col: ",".join(col.dropna().astype(str).unique())
)
merged_result.to_csv("合并后结果.csv", index=False, encoding="utf-8-sig")

如果分块读取后拼接仍然超出内存上限,可以替换为Dask库实现,它的语法和pandas高度兼容,支持并行计算和超出内存大小的文件处理,不需要改动核心聚合逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:45:39