当我根据'名称'合并两个数据框时两个daraframe中的列,我得到重复的行,我想保留第一个。我该如何处理?
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
答案 0 :(得分:2)
一旦您已经merged数据框,就可以轻松完成。
我亲自合并了两个数据框,如下所示:
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
我希望这很有帮助。快乐的编码。
答案 1 :(得分:2)
您可以使用地图而不进行合并,因为您不需要df2中的其他列。只需首先处理df2中的重复项。
theActiveElem
你得到了
df2_unique = df2.drop_duplicates('Name',keep='first')
df1['Address'] = df1['Name'].map(df2_unique.set_index('Name')['Address'])
答案 2 :(得分:0)
我不确定你是否需要在这里合并:
df2[['Name', 'Address']].drop_duplicates(subset=['Address'])
应该照顾它。