我有一本很多书。我想将pandas Dataframe列的值映射到字典的键(非值)。这是我的字典:

dict1={'fruits':('apple','grapes','oranges'),'food':('fish','meat','fibre')}

这是pandas Series对象:
df=pd.Series(['fish','apple','meat'])

我想要的期望输出:
0      food
1    fruits
2      food
dtype: object

最佳答案

如果“其他”同时存在于“水果”和“食物”中怎么办?这就是为什么如果没有某种逻辑来解决重复项就无法进行反向查找的原因。

如果所有值都是唯一的,则可以使用字典理解来反转字典:

reversed_dict = {val: key for key in dict1 for val in dict1[key]}

>>> reversed_dict
{'apple': 'fruits',
 'fibre': 'food',
 'fish': 'food',
 'grapes': 'fruits',
 'meat': 'food',
 'oranges': 'fruits'}

然后,您可以进行映射。
>>> pd.Series(['fish','apple','meat']).map(reversed_dict)
0      food
1    fruits
2      food
dtype: object

关于python - 将pandas Dataframe列映射到字典值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37082877/

10-12 18:06