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

Pandas creating a new column by merging two dataframes and matching rows

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

我正在尝试合并这些数据帧,以便得到如下内容:

东风 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