python pandas合并两个数据帧并处理重复项?

时间:2017-06-29 22:27:57

标签: python pandas dataframe duplicates

当我根据'名称'合并两个数据框时两个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

3 个答案:

答案 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'])

应该照顾它。