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

如何不使用去重功能实现Pandas两个数据表的一对多合并

Pandas数据表合并实现方案

你可以先完成两个表的关联匹配,再将同ID分组下非首行的ID、product字段置为空即可,全程不需要用到移除重复项功能,实现代码如下:

import pandas as pd

# 构造示例数据
df = pd.DataFrame({'ID' : [1,2,3], 'product' : ['Phone','Car','Bike']})   
df2 = pd.DataFrame({'ID2':[1,1,1,2,2,3,3,3], 'price' : [30,50,30,50,50,20,60,40], 'location' : ['aa','bb','cc','dd', 'ee','tt','hh','yy']})

# 第一步:按ID关联两个表,保留df2所有行并匹配对应的产品信息
merged_df = pd.merge(df2, df, left_on='ID2', right_on='ID', how='left')

# 第二步:标记同ID分组下非首次出现的行,仅做标记不删除数据
duplicate_mask = merged_df.duplicated(subset='ID', keep='first')

# 第三步:将标记行的ID、product字段置为空字符串
merged_df.loc[duplicate_mask, ['ID', 'product']] = ''

# 调整列顺序匹配预期结果
merged_df = merged_df[['ID', 'product', 'ID2', 'price', 'location']]

print(merged_df)

运行代码后输出的结果和你给出的预期格式完全一致。
实现逻辑说明:

  • 左连接关联保证df2的所有行都完整保留,不会丢失任何数据
  • duplicated方法仅用于标记重复ID的非首行数据,不会执行删除操作,符合你的使用限制
  • 仅对标记行的指定字段做值替换,其他字段保持不变

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:27:03