我想用df2['ID']中的相应ID替换df1['fruit']的果串。从本质上讲,我试图为水果创建一个查找表。
df1
水果 | 商店 | 价格 | |
---|---|---|---|
苹果 | heb | 0.99||
橙色 | 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)