将一个数据帧中的匹配值替换为另一个数据框中的索引值



我想用df2['ID']中的相应ID替换df1['fruit']的果串。从本质上讲,我试图为水果创建一个查找表。

df1

0.99克罗格沃尔玛沃尔玛
水果 商店 价格
苹果 heb
橙色 heb 0.69
苹果0.88
苹果0.89
香蕉 heb 0.59
香蕉0.59
橙色 kroger 0.39

TRY:

df1['fruit'] = df1.fruit.map(dict(df2[['fruit','id']].values))

这可能不是最Python的方法,而且肯定有panda内置函数可以做到这一点(我鼓励您查看文档(,但这里有一个有效的解决方案。

您可以通过创建映射函数并将其应用于列来实现这一点。

映射功能:

  • fd2创建水果与其代码之间的对应关系
  • 如果存在,则返回关联值;如果不存在,则为原始值

这里有一个函数:

def mapping(x):
mapping_dict = df2.set_index("fruit")['id']
try:
return mapping_dict[x]
except:
return x #or whatever to indicate that the fruit is not in df2

将其应用于df1:

df1['fruit'] = df1['fruit'].apply(mapping)

最新更新