如何仅在“ id”上合并/合并这两个数据框。产生3个新的数据框:
在Python中使用熊猫。
第一个数据帧(DF1)
| id | name |
|-----------|-------|
| 1 | Mark |
| 2 | Dart |
| 3 | Julia |
| 4 | Oolia |
| 5 | Talia |
第二个数据帧(DF2)
| id | salary |
|-----------|--------|
| 1 | 20 |
| 2 | 30 |
| 3 | 40 |
| 4 | 50 |
| 6 | 33 |
| 7 | 23 |
| 8 | 24 |
| 9 | 28 |
我的解决方案
R1 =pd.merge(DF1, DF2, on='id', how='inner')
我不确定这是获得R2和R3的最简单方法
R2应该看起来像
| id | name |
|-----------|-------|
| 5 | Talia |
R3应该看起来像:
| id | salary |
|-----------|--------|
| 6 | 33 |
| 7 | 23 |
| 8 | 24 |
| 9 | 28 |
答案 0 :(得分:2)
您可以在indicator
中打开merge
并查找相应的值:
total_merge = df1.merge(df2, on='id', how='outer', indicator=True)
R1 = total_merge[total_merge['_merge']=='both']
R2 = total_merge[total_merge['_merge']=='left_only']
R3 = total_merge[total_merge['_merge']=='right_only']
更新:Ben的建议可能是这样的:
dfs = {k:v for k,v in total_merge.groupby('_merge')}
然后您可以执行以下操作:
dfs['both']