我有两个数据帧,一个匹配的列[ID]。
DF 1
ID VAR
1 442
1 429
1 58
2 928
2 8493
3 093
3 809
3 913
4 133
4 490
DF2
ID CODE
1 10foo
2 20bar
3 30foo
4 40bar
我试图合并这些数据帧,所以我得到这样的东西:
DF 3
ID VAR CODE
1 442 10foo
1 429 10foo
1 58 10foo
2 928 20bar
2 8493 20bar
3 093 30foo
3 809 30foo
3 913 30foo
4 133 40bar
4 490 40bar
我已经尝试了这个与DF3 = DF1.merge(DF2, on='ID', how='inner', right_index=True)
这实际上是有效的,但最终会复制值的负载,由于某种原因使行数增加了一倍以上。真的不知道为什么会这样。我需要DF3中的行数与DF1
相同谢谢你的帮助。
为了保持与DF1相同的行数,您将需要左合并:
df1.merge(df2, on='ID', how='left')
我们可以试试这个:
>>> df = pd.merge(df1,
... df2,
... how='left',
... left_on=['ID'],
... right_on=['ID'])
>>> df
ID VAR CODE
0 1 442 10foo
1 1 429 10foo
2 1 58 10foo
3 2 928 20bar
4 2 8493 20bar
5 3 93 30foo
6 3 809 30foo
7 3 913 30foo
8 4 133 40bar
9 4 490 40bar