python——用lambda函数替换for循环

Posted Lenskit

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python——用lambda函数替换for循环相关的知识,希望对你有一定的参考价值。

场景如下:

现在有一个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)

至于如何取舍,就由各位自行决定了,多学一点总不是坏处,对吧?

以上是关于python——用lambda函数替换for循环的主要内容,如果未能解决你的问题,请参考以下文章

python易错题之lambda 以及 for循环中内嵌函数

Python的函数式编程

Python lambda不记得for循环中的参数[重复]

如何用 C# 中的函数语句替换 for 循环?

如何使用python将and else语句添加到for循环中的if作为lambda的一部分

Python学习笔记010——匿名函数lambda