python-3.x 使用lambda将字典Map到pandas系列

pgvzfuti  于 4个月前  发布在  Python
关注(0)|答案(4)|浏览(51)

我尝试使用lambda将字典Map到pandas系列。它不是将值Map到系列'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, 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

nwo49xxi

nwo49xxi1#

这是将数字Map到日期名称的精确解决方案。'timeStamp'是包含日期的列,如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']

字符串

wribegjk

wribegjk2#

这段代码应该对你有用:

data['food'].map(lambda x: food_to_animal[x])

字符串
如果不将data.food调整为lowercase,则会得到KeyError
要防止此错误,可以使用defaultdict

kg7wmglp

kg7wmglp3#

请尝试将df.food值设置为lower casemap字典

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

ztmd8pv5

ztmd8pv54#

事实上,你不需要lambda。Panda的replace知道如何使用字典。只要确保键的大小写正确:

data.food.str.lower().replace(food_to_animal)

字符串
P.S.:map + lambda的工作速度比replacemap +字典快2倍。

相关问题