2016-04-06 12 views
0

Açıklayamayacağım pd.merge kullanarak iki farklı birleştirme davranışı alıyorum ve birilerinin bir borç vermesini umuyorum. dataframes oluşturmaPandalar pd.merge, gerçek değerinden ziyade NaN ile sonuçlanır

Örnek Bir

elle davranışı birleştirme sağ sonuçlanır. Yani, Satıcı sütununun doğru değeri vardır.

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) 

Sonuçlar: Ben .csv dosyalarından aynı verilerde okursanız

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

Ben birleştirme ile yanlış sonuçlar alırsınız.

Örnek İki

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) 

Sonuçlar: Ben dtypes her iki veri setleri ile aynı olduğunu teyit ettik

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

Satıcı sütununda şimdi NaN içerir. Her şey int64 olan ID haricinde bir nesnedir.

Neyi eksik? Örnek One

+0

'df1' ve' df2' 'den read_csv' sonra verileri ekleyebilir misiniz? –

cevap

0

Kişisel Birimler farklıdır ve birleştirme sonucu

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

(ı Ör 1. kod çalıştırmasına)

Belki yanlışlıkla Birimi değişti mi?

(Bu bir cevap olmamalı ama henüz yorum yapamayız.)

+0

Bir bakış için teşekkürler - df1 yanlış Birim değerine sahipti. Güncelledim, bu yüzden doğru şekilde çalışmalı. – FunnyChef

0

konu benim koduyla ancak CSV dosyasındaki verilerle değildi. Birimler sütunundaki değer için users3.csv dosyasında hatalı bir alan vardı. Bu alan kaldırıldıktan sonra istenen sonuçları üretebildim.