2016-04-06 7 views
0

説明できないpd.mergeを使用して2つの異なるマージ動作が得られています。誰かが手を貸すことができると思っています。Pandas pd.mergeは実際の値ではなくNaNになります

例1

は手動でデータフレームを作成するには、右のマージ動作が発生します。すなわち、Seller列が正しい値を持っていること。

df1 = DataFrame([[1,'Dude','2016-03-07 16:21', '1e2345a6-ae7e-89e0-123d-b4567fcc8fb9']],columns=['ID','Name','Created at', 'Unit']) 

df2 = DataFrame([['SellTEST','1e2345a6-ae7e-89e0-123d-b4567fcc8fb9']], columns=['Seller', 'Unit']) 

merge_df = pd.merge(df1, df2, on=['Unit'],how='left') 

print (merge_df) 

結果:

ID Name  Created at         Unit Seller 
0 1 Dude 2016-03-07 16:21 1e2345a6-ae7e-89e0-123d-b4567fcc8fb9 SellTEST 

私は.CSVファイルから同じデータを読み込む場合は、私は、マージで誤った結果を受け取ります。出品者の欄には、今のNaNが含まれています

例二

ticketdata = r'tickets3.csv' 
userdata = r'users3.csv' 

df1 = pd.read_csv(ticketdata) 
df2 = pd.read_csv(userdata) 

merge_df = pd.merge(df1, df2, on=['Unit'],how='left') 
print (merge_df) 

結果:

ID Name  Created at         Unit Seller 
0 1 Dude 2016-03-07 16:21 1e2345a6-ae7e-89e0-123d-b4567fcc8fb9  NaN 

私はdtypesは、両方のデータセットと同じであることを確認しました。すべてがint64というIDを除いてObjectです。

私には何が欠けていますか?

+0

'read_csv'の後に' df1'と 'df2'のデータを追加できますか? –

答えて

0

例の一つであなたのユニットが異なっており、マージの結果は

ID Name  Created at         Unit Seller 
0 1 Dude 2016-03-07 16:21 7e5652a0-ae3e-11e5-820d-b3523fcc3fb4 NaN 

です(私は例1からのコードを実行します)たぶん、あなたは誤って単位を変更?

(これが答えではありませんが、私はまだコメントすることはできません。)

+0

見ていただきありがとうございます - df1のユニット値が間違っていました。私はそれが正しく動作するように更新しました。 – FunnyChef

0

問題は、私のコードではなく、CSVファイルのデータではなかったです。 Units列の値について、users3.csvファイルに誤ったスペースがありました。その空間が削除されたら、私は望みの結果を生み出すことができました。

関連する問題