通过合并两个数据框和匹配行来创建一个新列



我有两个数据帧,一个匹配的列[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

最新更新