如何在特定列上连接两个pandas数据帧

时间:2016-01-27 12:47:47

标签: join pandas

我有第一个pandas数据框,看起来像这样

order_id buyer_id caterer_id item_id  qty_purchased  
    387      139          1       7              3   
    388      140          1       6              3   
    389      140          1       7              3   
    390       36          1       9              3   
    391       79          1       8              3   
    391       79          1       12              3   
    391       79          1       7              3   
    392       72          1       9              3   
    392       72          1       9              3   
    393       65          1       9              3   
    394       65          1      10              3   
    395      141          1      11              3   
    396      132          1      12              3   
    396      132          1      15              3   
    397       31          1      13              3   
    404       64          1      14              3   
    405      146          1      15              3   

第二个数据框看起来像这样

 item_id meal_type
      6       Veg
      7       Veg
      8       Veg
      9    NonVeg
     10       Veg
     11       Veg
     12       Veg
     13    NonVeg
     14       Veg
     15    NonVeg
     16    NonVeg
     17       Veg
     18       Veg
     19    NonVeg
     20       Veg
     21       Veg

我想在item_id列上加入这两个数据框。这样最终的数据框应该包含item_type,它与item_id匹配。

我正在python中执行以下操作

pd.merge(segments_data,meal_type,how='left',on='item_id')

但它为我提供了所有nan

1 个答案:

答案 0 :(得分:2)

您必须检查两个列(名称)的dtypes types才能加入。

如果有不同之处,可以投射它们,因为你需要相同的dtypes。有时numeric列为string列,但看起来像numbers

如果同时存在两种string类型,则可以帮助将它们转换为int。问题可能是whitespaces

segments_data['item_id'] = segments_data['item_id'].astype(int) 
meal_type['item_id'] = meal_type['item_id'].astype(int)

pd.merge(segments_data,meal_type,how='left',on='item_id')