根据列合并数据帧,仅保留第一个匹配项

时间:2017-11-01 07:38:26

标签: python pandas

我有2个数据帧,如下所示。

df_1    
Index   Fruit
1       Apple
2       Banana
3       Peach

df_2    
Fruit   Taste
Apple   Tasty
Banana  Tasty
Banana  Rotten
Peach   Rotten
Peach   Tasty
Peach   Tasty

我想根据Fruit合并两个数据框,但只保留第二个数据框中第一次出现的AppleBananaPeach。最终结果应该是:

df_output       
Index   Fruit   Taste
1   Apple   Tasty
2   Banana  Tasty
3   Peach   Rotten

其中FruitIndexTaste是列标题。我尝试了类似df1.merge(df2,how='left',on='Fruit的内容,但根据df_2

的长度创建了额外的行

感谢。

1 个答案:

答案 0 :(得分:3)

对第一行使用drop_duplicates

df = df_1.merge(df_2.drop_duplicates('Fruit'),how='left',on='Fruit')
print (df)
   Index   Fruit   Taste
0      1   Apple   Tasty
1      2  Banana   Tasty
2      3   Peach  Rotten

如果想要更快地添加一列,请使用map

s = df_2.drop_duplicates('Fruit').set_index('Fruit')['Taste']
df_1['Taste'] = df_1['Fruit'].map(s)
print (df_1)
   Index   Fruit   Taste
0      1   Apple   Tasty
1      2  Banana   Tasty
2      3   Peach  Rotten