python——用lambda函数替换for循环
https://blog.csdn.net/chenkfkevin/article/details/71090664
场景如下:
现在有一个dataframe,其中一列为score,值从0-100,
df:
score
98
88
37
68
86
33
现在需要增加一列level,给这些分数分类,90分以上为A,60-90为B,60以下为C。
常用的方法肯定是使用for循环,对每一行进行处理。
- import pandas as pd
- list = [98,88,37,68,86,33]
- df = pd.DataFrame(list, columns=['score']) # convert list to dataframe
- df['level'] = '' # add a column
- def judgeLevel(df):
- for i in range(len(df)):
- if df.score.ix[i] < 60:
- df.level.ix[i] = 'C'
- elif df.score.ix[i] > 90:
- df.level.ix[i] = 'A'
- else:
- df.level.ix[i] = 'B'
- return df
- df = judgeLevel(df)
还有一种方法,是使用python的匿名函数:lambda函数
- import pandas as pd
- list = [98,88,37,68,86,33]
- df = pd.DataFrame(list, columns=['score'])
- df['level'] = '' # add a column
- def judgeLevel(df):
- if df['score'] < 60:
- return 'C'
- elif df['score'] > 90:
- return 'A'
- else:
- return 'B'
- df['level'] = df.apply(lambda r: judgeLevel(r), axis=1)
好的心态+正确的方法
浙公网安备 33010602011771号