【发布时间】:2020-04-18 19:11:50
【问题描述】:
我正在尝试将其他数据帧(DF_B、DF_C)合并到 DF_A 上以等于 DF_D。
将附加数据帧绑定到 DF_A 的唯一方法是通过列 B_2,因此我尝试将它们合并到 B_2。我在下面尝试了这段代码来合并第一个附加数据帧 (DF_B)。
DF_D = pd.merge(DF_A, DF_B, how='left', on='B_2')
这几乎奏效了,但它正在创建额外的列。
所以我认为添加left_on= 可能有效,但它没有。
DF_D = pd.merge(DF_A, DF_B, how='left', left_on=['B_2','C_3', 'D_4'])
我正在寻找一种在主数据帧上写入额外数据帧的方法,直到 DF_D 被填写。另外,我希望 DF_D 保留所有其他行和原始列/名称,即使在合并期间没有匹配项。
原始主数据框 A:
A_1 B_2 C_3 D_4
0 03/17 3001
1 03/17 2002 L BLUE
2 03/17 3777
3 04/17 5555
4 04/17 3232
5 04/17 5000
6 04/17 5151
7 05/17 2212 S RED
附加数据框 B:
B_2 C_3 D_4
0 3001 M GRAY
1 3131 S BLUE
2 3333 XS GREEN
3 3232 L PINK
4 3000 M RED
像这样使用:
DF_1 = pd.merge(DF_A, DF_B, how='left', on='B_2')
附加数据框 C:
B_2 C_3 D_4
0 5151 S BLUE
1 5545 M PINK
2 5555 XL RED
3 5222 L GRAY
4 5112 S GREEN
像这样使用:
DF_D = pd.merge(DF_1, DF_C, how='left', on='B_2')
结果,最终 DF_D:
A_1 B_2 C_3 D_4
0 03/17 3001 M GRAY
1 03/17 2002 L BLUE
2 03/17 3777
3 04/17 5555 XL RED
4 04/17 3232 L PINK
5 04/17 5000
6 04/17 5151 S BLUE
7 05/17 2212 S RED
【问题讨论】:
标签: python-3.x pandas merge