首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >映射来自其他数据集的数据。Python熊猫

映射来自其他数据集的数据。Python熊猫
EN

Stack Overflow用户
提问于 2016-09-19 14:51:49
回答 2查看 1.3K关注 0票数 1

所以我得到了两个数据集,df1有所有水果的颜色,df2没有。如何根据水果名称,基于d1的颜色数据映射df2的颜色值?

代码语言:javascript
复制
               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
               "                  "                 "                 "
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-19 14:54:06

我认为你可以使用map,但首先需要Series.drop_duplicates

代码语言:javascript
复制
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_duplicatesDataFrame.dropmerge的另一种解决方案

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

回答已采纳

发布于 2016-09-19 14:54:06

您可以使用merge实现这一点

代码语言:javascript
复制
df2 = df2.merge(df1, on="Name", how="left", suffixes=('_1','_2'))

如果名称是您的索引列,则可以只执行一个join

代码语言:javascript
复制
df2 = df2.join(df1[['color']])

有关更完整的示例,您可以查看上面/下面的答案,它很友好地详细说明了我的答案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39566992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档