2016-07-03 6 views
0

2つのcsvファイルを連結したいと思います。私は2つのcsvファイルをpandas/pythonで結合してください。

最終的なファイル

ようになり、最終的なCSVを得た1

id,name,category-id,lat,lng 4c29e1c197,Area51,4bf58dd8d,45.44826958,9.144208431 4ede330477,Punto Snai,4bf58dd8d,45.44833354,9.144086353 51efd91d49,Gelateria Cecilia,4bf58dd8d,45.44848931,9.144008735

ファイル2

id,name,category-id,lat,lng 4c29e1c197,Area51,4bf58dd8d,45.44826958,9.144208432 4ede330477,Punto Snai,4bf58dd8d,45.44833354,9.144086353 51efd91d49,Gelateria Cecilia,4bf58dd8d,45.44848931,9.144008735 5748729449,Duomo Di Milano,52e81612bc,45.463898,9.192034

ファイル:各CSVファイルには、以下の構造を有します

id,name,category-id,lat,lng 4c29e1c197,Area51,4bf58dd8d,45.44826958,9.144208431 4c29e1c197,Area51,4bf58dd8d,45.44826958,9.144208432 4ede330477,Punto Snai,4bf58dd8d,45.44833354,9.144086353 51efd91d49,Gelateria Cecilia,4bf58dd8d,45.44848931,9.144008735 5748729449,Duomo Di Milano,52e81612bc,45.463898,9.192034

だから私は、この行っている:私は名前は私がidで再び今GROUPBYする最初のGROUPBY後 を変更することができ、緯度とLNG、categoy_id、idでGROUPBYしようとした

import pandas as pd 

df1=pd.read_csv("file1.csv") 
df2=pd.read_csv("file2.csv") 

full_df = pd.concat(df1,df2) 

full_df = full_df.groupby(['id','category_id','lat','lng']).count() 

full_df2 = full_df[['id','category_id']].groupby('id').agg('count') 

full_df2.to_csv("final.csv",index=False) 

をand category_id私の例で示したように、最初の行が長い間変更されたためですが、おそらくfile2がfile1の更新ファイルであるためです。

私は印刷しようとしたときにカウント値を取得しました。

+0

私は、ファイルを編集した@shivsn – l4nd0

答えて

1

この問題を解決する1つの方法は、2つのDataFramesを連結した後にdf.drop_duplicates()を使用することです。さらに、drop_duplicatesには、引数 "keep"があります。この引数を使用すると、重複が最後に出現するように指定できます。

full_df = pd.concat([df1,df2]) 
unique_df = full_df.drop_duplicates(keep='last') 

追加のヘルプが必要な場合は、にdrop_duplicatesを確認してください。

0

私は次のコードでこのproblemenを解決することができます:

import pandas as pd 

df1=pd.read_csv("file1.csv") 
df2=pd.read_csv("file2.csv") 

df_final=pd.concat([df1,df2]).drop_duplicates(subset=['id','category_id','lat','lng']).reset_index(drop=True) 
print(df_final.shape) 

df_final2=df_final.drop_duplicates(subset=['id','category_id']).reset_index(drop=True) 

df_final2.to_csv('final', index=False) 
関連する問題