熊猫左联接替换列值

时间:2020-05-15 06:46:24

标签: python-3.x pandas

我想对两个熊猫数据框进行左连接: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')

1 个答案:

答案 0 :(得分:2)

使用DataFrame.combine_firstDataFrame.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