如何用Python按ID连接含重复ID的Table A与无重复ID的Table B
解决Pandas按ID连接并保留重复行的问题
你需要的是左连接(left join),Pandas的merge方法完全可以实现,关键是正确设置参数。以下是具体实现代码:
import pandas as pd # 构造Table A数据 df_a = pd.DataFrame({ 'id': [1, 1, 2], 'col1': ['Apple', 'Mango', 'Banana'] }) # 构造Table B数据 df_b = pd.DataFrame({ 'id': [1, 2], 'col3': ['Eat', 'Drink'] }) # 按id字段左连接,保留Table A的所有行(含重复id) merged_df = pd.merge(df_a, df_b, on='id', how='left') print(merged_df)
运行结果:
| id | col1 | col3 | |
|---|---|---|---|
| 0 | 1 | Apple | Eat |
| 1 | 1 | Mango | Eat |
| 2 | 2 | Banana | Drink |
关键说明:
how='left':确保保留左表(Table A)的所有行,包括重复的id记录- 由于Table B的id与col3是一一对应关系,merge会自动将每个id对应的col3值匹配到Table A的所有对应行上
concat方法是按轴拼接数据,不适合这种按关键字段关联的场景,所以无法得到预期结果
内容的提问来源于stack exchange,提问作者Uqhah
相关产品推荐
相关产品推荐

