我正在尝试使用lambda将字典与熊猫系列相对应。与其将值映射到“食物”系列,不如将其返回整个字典。我知道我需要修改lambda函数,但不知道如何。
data = pd.DataFrame({'food': ['bacon', 'pulled pork', 'bacon','Pastrami', 'corned beef', 'Bacon','pastrami', 'honey ham', 'nova lox'], 'ounces': [4, 3, 12, 6, 7.5, 8, 3, 5, 6]})
food_to_animal = {'bacon': 'pig', 'pulled pork': 'pig', 'pastrami': 'cow', 'corned beef': 'cow', 'honey ham': 'pig', 'nova lox': 'salmon'}
data['food'].map(lambda x: food_to_animal)
输出:
0 {'bacon': 'pig', 'pulled pork': 'pig', 'pastra...
1 {'bacon': 'pig', 'pulled pork': 'pig', 'pastra...
2 {'bacon': 'pig', 'pulled pork': 'pig', 'pastra...
3 {'bacon': 'pig', 'pulled pork': 'pig', 'pastra...
4 {'bacon': 'pig', 'pulled pork': 'pig', 'pastra...
5 {'bacon': 'pig', 'pulled pork': 'pig', 'pastra...
6 {'bacon': 'pig', 'pulled pork': 'pig', 'pastra...
7 {'bacon': 'pig', 'pulled pork': 'pig', 'pastra...
8 {'bacon': 'pig', 'pulled pork': 'pig', 'pastra...
Name: food, dtype: object
期望的输出:
0 pig
1 pig
2 pig
3 cow
4 cow
5 pig
6 cow
7 pig
8 salmon
请尝试将df.food
值设为lower case
和map
字典
data['food'].str.lower().map(food_to_animal)
和到列
data['x']= data['food'].str.lower().map(food_to_animal)
0 pig
1 pig
2 pig
3 cow
4 cow
5 pig
6 cow
7 pig
8 salmon
Name: food, dtype: object
事实上,您不需要lambda。熊猫的replace
知道如何使用字典。只需确保密钥在正确的情况下即可:
data.food.str.lower().replace(food_to_animal)