Python Pandas 中lambda和apply函数的应用

采用lambda和apply函数的组合可以很方便地对pandas的dataframe的列和行进行数值操作,效率要比for循环快很多。

1. lambda函数简介

基本形式:lambda x: func(x)
理解:以分号为分界线,左边是输入的变量,右边是对变量进行的操作。也可以将lambda表达式进行定义,如f = lambda x: x+2,方便后续调用。
常见形式比如:

lambda x: x * x  # 输入数值型x,获取其平方
lambda x, y: x + y  #输入数值型x和y,获取两者之和
lambda s: s[0:-2]  #输入字符串s,截取除最后两位外的其他字符
lambda d: '%.2f'%d  # 输入数值型d,对其进行格式化操作,保留两位小数

简单应用:

f = lambda a, b: a ^ 2 + b ^ 2
f(1, 2)
Out[34]: 7
2. 利用apply函数和lambda函数应用于dataframe中

利用lambda和apply函数结合,可以对dataframe的一行或者一列进行操作,基本用法如下

df['new_col'] = df['col'].apply(lambda x: x+2)

可以看出此时是针对一列数据进行的操作,传入的参数是一个series,具体操作可以根据lambda函数进行调整。

此时,如果想要对dataframe的多个列进行同时操作,可以将整个dataframe作为参数传入,同时设置axis=1来指定是对列进行的操作(同理设置axis=0是对行向量进行操作),基本用法如下:

df['new_col'] =  df.apply(lambda x: x['a'] + x['b'] - x['c'], axis=1)

简单应用:

def self_sum(a, b):
   return a ^ 2 + b ^ 2

df['sum'] = df.apply(lambda x: self_sum(x['from'], x['to']), axis=1)

完结撒花~

参考资料:
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.apply.html?highlight=apply#pandas.DataFrame.apply
https://blog.csdn.net/weixin_40659838/article/details/95174513

你可能感兴趣的:(Python Pandas 中lambda和apply函数的应用)