将pandas Dataframe列映射到字典值

时间:2016-05-06 23:39:41

标签: python dictionary pandas dataframe

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

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

这是熊猫系列对象:

df=pd.Series(['fish','apple','meat'])

我想要的输出:

0      food
1    fruits
2      food
dtype: object

2 个答案:

答案 0 :(得分:6)

如果'其他'在两个水果'和'食物'?这就是为什么在没有某种逻辑来解决重复的情况下你不能进行反向查找的原因。

如果您的值都是唯一的,那么您可以使用字典理解来反转字典:

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

答案 1 :(得分:1)

解决方案

df.apply(lambda x: [k for k in dict1 if x in dict1[k]][0])
相关问题