我想对两个熊猫数据框进行左连接:d1和d2。但是,在连接之后,我希望一个列值替换另一列中的NULL值。这是我的数据集:
vehicle_type vehicle_id sales margin
a 11 200 0.1
b 22 150 0.2
c NaN NaN NaN
d NaN NaN NaN
vehicle_type vehicle_id sales alignment
c 33 210 x
d 44 300 y
我希望最终结果如下所示,其中左联接将替换D1中的Null车辆ID和销量:
vehicle_type vehicle_id sales margin alignment
a 11 200 0.1 NaN
b 22 150 0.2 NaN
c 33 210 NaN x
d 44 300 NaN y
我正在使用以下代码,但是它不起作用:
D3 = D1.merge(D2, on='vehicle_type',how='left')
答案 0 :(得分:2)
使用DataFrame.combine_first
和DataFrame.set_index
通过vehicle_type
列正确对齐DataFrame:
df3 = (df1.set_index('vehicle_type')
.combine_first(df2.set_index('vehicle_type'))
.reset_index())
print (df3)
vehicle_type alignment margin sales vehicle_id
0 a NaN 0.1 200.0 11.0
1 b NaN 0.2 150.0 22.0
2 c x NaN 210.0 33.0
3 d y NaN 300.0 44.0