2017-06-29 103 views
1

當我在兩個daraframe中基於'Name'列合併兩個數據框時,我得到了重複的行,並且我想保留第一個。我該如何處理它?python熊貓合併兩個數據框並處理重複?

df1 

    Name Address 
0 Amy Nan 
1 Breen Nan 
2 Carly Nan 

df2 

    ID Name Address 
0 1102 Amy 899 South 
1 1105 Amy 700 Tower 
2 1342 Breen 930 Tower 
3 4674 Breen 555 Hall 
4 5644 Breen 345 Young 
5 2340 Carly 8988 House 

合併後:

df1 

    Name Address 
0 Amy 899 South 
1 Amy 700 Tower 
2 Breen 930 Tower 
3 Breen 555 Hall 
4 Breen 345 Young 
5 Carly 8988 House 

我要讓這樣的:

df1 

    Name Address 
0 Amy 899 South 
1 Breen 930 Tower 
2 Carly 8988 House 

回答

2

一旦你已經有了你的數據幀,就可以輕鬆完成。

我個人合併你的兩個dataframes像如下:

df1 = pd.merge(df1,df2,how='right') # 'right' because we don't want Nan values do we ? 

那麼所有你想要做的是drop duplicates如下:

df1.drop_duplicates(subset=['Name'],keep='first',inplace=True) 
print(df1) 

輸出:

 Address Name 
0 899 South Amy 
2 930 Tower Breen 
5 8988 House Carly 

希望這很有幫助。快樂編碼。

0

我不知道,如果你需要做的合併在這裏:

df2[['Name', 'Address']].drop_duplicates(subset=['Address']) 

應該照顧它。

2

您可以使用map進行此操作而無需合併,因爲您不需要df2中的其他列。只需要首先處理df2中的重複項。

df2_unique = df2.drop_duplicates('Name',keep='first') 
df1['Address'] = df1['Name'].map(df2_unique.set_index('Name')['Address']) 

你得到

Name Address 
0 Amy  899 South 
1 Breen 930 Tower 
2 Carly 8988 House