2016-07-03 4 views
0

Я хотел бы объединить 2 csv-файлов. Каждый файл CSV имеет следующую структуру:Присоединяйтесь к двум файлам csv с pandas/python без дубликатов

Файл 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

Так что я сделал это:

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) 

Я пытался GroupBy по идентификатору, categoy_id, широта и LNG, название может измениться После первого GroupBy я хочу снова GroupBy, но теперь по идентификатору и category_id, потому что, как показано в моем примере, первая строка была изменена в длину, но это, вероятно, потому, что файл2 является обновлением файла1

Я не понимаю о groupby, потому что, когда я пытался распечатать, я получил только значение счета.

+0

Я редактировал файл @shivsn – l4nd0

ответ

1

Один из способов решения этой проблемы - просто использовать df.drop_duplicates() после того, как вы объединили два DataFrames. Кроме того, drop_duplicates имеет аргумент «keep», который позволяет указать, что вы хотите сохранить последнее вхождение дубликатов.

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

Проверьте documentation для 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) 
Смежные вопросы