2016-03-23 8 views
0

私の投稿を読む時間をとってくれてありがとう。パンダのデータフレームをマージすると一部のデータが複製される

私はPython pandasを使用しており、多数のCSVファイルとTSVファイルの情報をマージしています。 2番目のマージを実行すると、結果のデータフレームにデータが複製されます。私は、マージコールで何か基本的なものを見逃していると思っていますが、私はそれを理解することができませんでした。

コード:予想通り

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では、いくつかの値が期待されている)になります。

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 

任意のアイデア(S:

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はdupesの何千ものが含まれています)私はどのようにmerge2_dfを台無しにしていますか?

+1

を解決した追加しました。しかし、重複したポスト・マージがある場合は、重複したキーが事前にマージされている可能性があります。 – JohnE

答えて

0

shipment_dfデータフレームのNaN値で問題が発生しました。私はmerge2_dfで0と重複したエントリではNaNを交換するには、次のこれは、リードスルーしようとするには余りにも多くのコードであり、我々はあなたのCSVへのアクセス権を持っていない

shipment_df.fillna(0, inplace=True) 
関連する問題