2016-03-23 12 views
0

Yazımı okumak için zaman ayırdığınız için teşekkür ederiz.Pandaların bir araya getirilmesi dataframes bazı verileri çoğaltır

Python pandalarını kullanıyorum ve bir dizi CSV ve TSV dosyasından bilgileri birleştiriyorum. Uyguladığımda 2. birleştirme verileri sonuçta elde edilen veri çerçevesinde çoğaltılır. Varsayalım, birleştirme çağrısı ile temel bir şey eksik ama bunu anlayamadım.

Kodu: beklendiği gibi

from pandas import DataFrame, read_csv 
import matplotlib.pyplot as plt 
import pandas as pd 
import sys 
import matplotlib 

# Enable inline plotting 
%matplotlib inline 

# read data into dataframes 
ticketdata = r'/pathto.csv' 
ticketdata = r'/pathto.csv' 
userdata = r'/pathto.csv' 
shipmentdata = r'/pathto.tsv' 

tickets_df = pd.read_csv((ticketdata), usecols=['Id',"Requester",'Created at',"Requester email", 
               "Requester external id"]) 
users_df = pd.read_csv((userdata), usecols=['External ID','Printers',"Organization Title"]) 
shipment_df = pd.read_csv((shipmentdata), delimiter='\t', usecols=['Cust','Printer ID']) 

# Clean up tickets_df & shipment_df 

# Change "Requester external id" to "External ID" to support the merge 
tickets_df.columns = ['Ticket Id',"Requester","External ID","Requester email",'Created at'] 
shipment_df.columns = ['VAR','Printers'] 
# Change column order for the sake of readability 
tickets_df = tickets_df[['Ticket Id','Requester','Created at',"Requester email","External ID"]] 

# Replace NaN in External ID with 0 and merge data 
tickets_df.fillna(0, inplace=True) 
merge1_df = pd.merge(tickets_df, users_df, on=['External ID'], how='left') 
merge1_df = merge1_df[['Ticket Id','Created at',"Organization Title",'Requester',"Requester email","External ID",'Printers']] 
merge2_df = pd.merge(merge1_df, shipment_df, on=['Printers'], how='left') 

merge1_df (NaN bazı değerler için beklenen) görünüyor:

Ticket Id Created at Organization Title Requester Requester email  External ID  Printers 
0 1 2014-08-21 18:19 NaN  dude [email protected] 0 NaN 
1 2 2014-09-09 12:04 NaN  dude1 [email protected] 0 NaN 
2 3 2014-09-09 12:04 NaN  dude2 [email protected] 0 NaN 
3 4 2014-09-09 12:04 NaN  dude3 [email protected] 0 NaN 

merge2_df safdilli binlerce içerir:

Ticket Id Created at Organization Title Requester Requester email  External ID  Printers 
0 1 2014-08-21 18:19 NaN  dude [email protected] 0 NaN 
1 1 2014-08-21 18:19 NaN  dude [email protected] 0 NaN 
2 1 2014-08-21 18:19 NaN  dude [email protected] 0 NaN 
3 1 2014-08-21 18:19 NaN  dude [email protected] 0 NaN 

herhangi bir fikir (ler) merge2_df nasıl berbat ettim?

+1

çözüldüğünü belirtti. Ancak, muhtemelen birleştirme sonrası kopyalarınız varsa, önceden birleştirme anahtarlarınız vardı. – JohnE

cevap

0

Sorun, shipment_df veri çerçevesindeki NaN değerleri ile yapıldı. Ben merge2_df 0 ve yinelenen girdileri ile NaN değiştirmek için aşağıdaki Bu okumaya teşebbüs çok fazla koddur ve biz CSV'lerden erişimi yok

shipment_df.fillna(0, inplace=True) 
İlgili konular