所以我得到了两个数据集,df1有所有水果的颜色,df2没有。如何根据水果名称,基于d1的颜色数据映射df2的颜色值?
df1 df2
Name Color Name Color
Apple Red Orange Na
Orange Orange Coconut Na
Pear Pear Pear Na
Pear Pear Strawberries Na
Papaya Papaya Banana Na
Watermelon Watermelon Papaya Na
" " " "发布于 2016-09-19 14:54:06
我认为你可以使用map,但首先需要Series.drop_duplicates
df2['Color'] = df2['Name'].map(df1.set_index('Name')['Color'].drop_duplicates())
print (df2)
Name Color
0 Orange Orange
1 Coconut NaN
2 Pear Pear
3 Strawberries NaN
4 Banana NaN
5 Papaya Papaya采用DataFrame.drop_duplicates和DataFrame.drop的merge的另一种解决方案
df2 = pd.merge(df2.drop('Color', axis=1),df1.drop_duplicates(), how='left')
print (df2)
Name Color
0 Orange Orange
1 Coconut NaN
2 Pear Pear
3 Strawberries NaN
4 Banana NaN
5 Papaya Papaya发布于 2016-09-19 14:54:06
您可以使用merge实现这一点
df2 = df2.merge(df1, on="Name", how="left", suffixes=('_1','_2'))如果名称是您的索引列,则可以只执行一个join
df2 = df2.join(df1[['color']])有关更完整的示例,您可以查看上面/下面的答案,它很友好地详细说明了我的答案。
https://stackoverflow.com/questions/39566992
复制相似问题