采用lambda和apply函数的组合可以很方便地对pandas的dataframe的列和行进行数值操作,效率要比for循环快很多。
https://www.jianshu.com/p/668dda233365
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 ^ 2f(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 ^ 2df['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
作者:王叽叽的小心情
链接:https://www.jianshu.com/p/668dda233365
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
此文由 我的网站 编辑,未经允许不得转载!:首页 > 潮·科技 » Python Pandas 中lambda和apply函数的应用