Python 3.x 使用lambda将字典映射到pandas系列
我正试图用lambda将一本字典与熊猫系列进行对比。它不是将值映射到“Food”系列,而是返回整个字典。我知道我需要修改lambda函数,但不知道如何修改Python 3.x 使用lambda将字典映射到pandas系列,python-3.x,pandas,lambda,mapping,series,Python 3.x,Pandas,Lambda,Mapping,Series,我正试图用lambda将一本字典与熊猫系列进行对比。它不是将值映射到“Food”系列,而是返回整个字典。我知道我需要修改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,
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 pig
1 pig
2 pig
3 cow
4 cow
5 pig
6 cow
7 pig
8 salmon
请尝试制作
df.food
值小写
和地图
字典
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)
注意:
map
+lambda
比replace
或map
+字典快2倍。这是将数字映射到日名的精确解决方案。”“时间戳”是包含日期的列,如2015-12-10 17:40:00
df['Day of Week']=df['timeStamp'].apply(lambda time: time.dayofweek)
dmap = {0:'Mon',1:'Tue',2:'Wed',3:'Thu',4:'Fri',5:'Sat',6:'Sun'}
df['Day of Week'] = df['Day of Week'].map(dmap)
df['Day of Week']
对但我需要了解lambda是如何工作的,对我来说,理解我问的问题很重要。是的。但我需要了解lambda是如何工作的,对我来说,理解我提出的问题很重要。
df['Day of Week']=df['timeStamp'].apply(lambda time: time.dayofweek)
dmap = {0:'Mon',1:'Tue',2:'Wed',3:'Thu',4:'Fri',5:'Sat',6:'Sun'}
df['Day of Week'] = df['Day of Week'].map(dmap)
df['Day of Week']