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

Pandas多键合并DataFrame产生冗余行问题求助

解决Pandas合并DataFrame时因重复键产生冗余行的问题

你遇到的问题本质是:当merge使用的module_name+index组合在两个DataFrame中存在重复项时,Pandas会生成笛卡尔积——也就是df1里每个重复键的行,都会和df2里对应重复键的所有行匹配,自然就出现了大量冗余行。

根据你的需求(按探测批次一一对应latency和latency2),有两种针对性的解决方法:

方法1:直接按行拼接(适用于行顺序严格对应)

如果df1和df2的行是严格按探测顺序排列的(比如第i行都是同一批次的结果),完全不需要用merge,直接按列拼接即可:

# 去掉df2中重复的module_name和index列,避免拼接后重复
df3 = pd.concat([df1, df2.drop(['module_name', 'index'], axis=1)], axis=1)

方法2:添加组内序号后合并(适用于行顺序可能不一致,但同组内顺序对应)

如果两个DataFrame的行顺序不严格一致,但每个(module_name, index)组合下的行是按探测顺序排列的,可以给每个组合添加组内计数,用这个唯一标识来合并:

# 给每个分组添加探测序号(从0开始计数)
df1['probe_num'] = df1.groupby(['module_name', 'index']).cumcount()
df2['probe_num'] = df2.groupby(['module_name', 'index']).cumcount()

# 用三个键合并,确保同组同序号的行匹配
df3 = pd.merge(df1, df2, on=['module_name', 'index', 'probe_num'])

# 可选:删除临时添加的probe_num列
df3 = df3.drop('probe_num', axis=1)

这样处理后,每个(module_name, index, probe_num)组合都是唯一的,合并时只会匹配对应批次的行,不会产生冗余。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 22:35:52