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

Join 如何在特定列上连接两个数据帧,join,pandas,Join,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

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

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
第二个数据帧是这样的

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_id匹配的item_type

我正在用python做以下工作

pd.merge(分段数据、膳食类型、离开的方式、物品id上的方式)


但是它给了我所有的
nan

你必须检查两列(名称)的
类型

如果有不同的类型,您可以强制转换它们,因为您需要相同的
d类型
。有时
numeric
列是
string
列,但看起来像
numbers

如果两种类型都是相同的
string
类型,可能会帮助将它们转换为
int
。问题可能是一些
空白

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')

我想您可以检查两列的相等性
dtypes
print segments\u data.dtypes
print mean\u type.dtypes
。我认为
dtypes
必须是相同的,而不是
object
int
@jezrael我没有得到you@jezrael
item\u id
是字符串类型。@jezrael是的。这两列都是字符串类型。您可以尝试将两列强制转换为
int
,然后尝试
merge
segments\u data['item\u id']=segments\u data['item\u id']=segments\u data['item\u id']。astype(int)
,可能有空格。。。