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@jezraelitem\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)
,可能有空格。。。