我有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
合并两个数据框,但只保留第二个数据框中第一次出现的Apple
,Banana
和Peach
。最终结果应该是:
df_output
Index Fruit Taste
1 Apple Tasty
2 Banana Tasty
3 Peach Rotten
其中Fruit
,Index
和Taste
是列标题。我尝试了类似df1.merge(df2,how='left',on='Fruit
的内容,但根据df_2
感谢。
答案 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