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

如何使用pandas合并列值不同的重复行并整合全列数据

pandas多CSV合并去重整合方案

步骤1:批量读取所有CSV并合并为总表

import pandas as pd
import glob

# 替换为你存放CSV文件的文件夹路径
csv_path = "./csv_files/*.csv"
csv_files = glob.glob(csv_path)

# 合并所有CSV到同一个DataFrame
df_all = pd.concat([pd.read_csv(f) for f in csv_files], ignore_index=True)

步骤2:按唯一标识分组合并重复行

首先确定你用来判定「同一记录」的唯一标识列,比如单主键用户id,或者组合主键姓名+身份证号,下面分场景给出方案:

场景1:同一记录的同列只有一个有效值,空值忽略,直接取首个非空值

# 单主键场景,把id换成你的实际主键列名
df_final = df_all.groupby("id", as_index=False).first()

# 组合主键场景示例,按姓名+手机号判定同一记录
# df_final = df_all.groupby(["姓名", "手机号"], as_index=False).first()

场景2:同一记录的同列有多个有效值,需要全部保留拼接

df_final = df_all.groupby("id", as_index=False).agg(
    # 对所有列的非空唯一值用顿号拼接
    lambda x: "、".join([str(i) for i in x.dropna().unique()])
)

场景3:不同列需要不同的聚合规则

比如数值类列求和/取最大值,文本类列拼接:

# 自定义每列的聚合规则
agg_config = {
    "消费总金额": "sum",
    "最近下单时间": "max",
    "收货地址": lambda x: "、".join(x.dropna().unique())
}
df_final = df_all.groupby(["姓名", "手机号"], as_index=False).agg(agg_config)

步骤3:导出结果

df_final.to_csv("合并完成结果.csv", index=False, encoding="utf-8-sig")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:36:07