我有第一个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
值
答案 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')