2016-01-27 62 views
1

我第一次大熊貓數據框,看起來像這樣如何加入兩隻大熊貓據幀上特定列

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

我想你可以檢查平等'dtypes'兩列'item_id','打印segments_data.dtypes','打印meal_type.dtypes'的。我認爲'dtypes'必須是相同的,而不是'object'和'int'。 – jezrael

+0

@jezrael我沒有找到你 – Neil

+0

@jezrael'item_id'是一個字符串類型。 – Neil

回答

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