pandas.apply()函数

敢说敢作敢为, 无怨无恨无悔。这篇文章主要讲述pandas.apply()函数相关的知识,希望能为你提供帮助。
1、介绍
apply函数是pandas里面所有函数中自由度最高的函数。该函数如下:
DataFrame.apply(func, axis=0, broadcast=False, raw=False, reduce=None, args=(), **kwds)
该函数最有用的是第一个参数,这个参数是函数,相当于C/C++的函数指针。
这个函数需要自己实现,函数的传入参数根据axis来定,比如axis = 1,就会把一行数据作为Series的数据 结构传入给自己实现的函数中,我们在函数中实现对Series不同属性之间的计算,返回一个结果,则apply函数 会自动遍历每一行DataFrame的数据,最后将所有结果组合成一个Series数据结构并返回。
2、样例

import numpy as np import pandas as pdif __name__ == ‘__main__‘: f = lambda x : x.max() - x.min() df = pd.DataFrame(np.random.randn(4, 3), columns=list(‘bde‘), index=[‘utah‘, ‘ohio‘, ‘texas‘, ‘oregon‘]) #columns表述列标, index表述行标 print(df)t1 = df.apply(f) #df.apply(function, axis=0),默认axis=0,表示将一列数据作为Series的数据结构传入给定的function中 print(t1)t2 = df.apply(f, axis=1) print(t2)

输出结果如下所示:
bde utah1.9507370.3182990.387724 ohio1.584464 -0.0829650.984757 texas0.477283 -2.774454 -0.532181 oregon -0.851359 -0.6548821.026698

b2.802096 d3.092753 e1.558879 dtype: float64
utah1.632438 ohio1.667428 texas3.251737 oregon1.878057 dtype: float64

3、性能比较
import numpy as np import pandas as pddef my_test(a, b): return a + bif __name__ == ‘__main__‘: df = pd.DataFrame({‘a‘:np.random.randn(6), ‘b‘:[‘foo‘, ‘bar‘] * 3, ‘c‘:np.random.randn(6)})print(df)df[‘value1‘] = df.apply(lambda row: my_test(row[‘a‘], row[‘c‘]), axis=1) print(df)df[‘vaule2‘] = df[‘a‘] + df[‘c‘] print(df)

输出结果如下:
abc 0 -1.745471foo0.723341 1 -0.378998bar0.229188 2 -1.468866foo0.788046 3 -1.323347bar0.323051 4 -1.894372foo2.216768 5 -0.649059bar0.858149

abcvalue1 0 -1.745471foo0.723341 -1.022130 1 -0.378998bar0.229188 -0.149810 2 -1.468866foo0.788046 -0.680820 3 -1.323347bar0.323051 -1.000296 4 -1.894372foo2.2167680.322396 5 -0.649059bar0.8581490.209089

abcvalue1vaule2 0 -1.745471foo0.723341 -1.022130 -1.022130 1 -0.378998bar0.229188 -0.149810 -0.149810 2 -1.468866foo0.788046 -0.680820 -0.680820 3 -1.323347bar0.323051 -1.000296 -1.000296 4 -1.894372foo2.2167680.3223960.322396 5 -0.649059bar0.8581490.2090890.209089

注意:当数据量很大时,对于简单的逻辑处理建议方法2(个人处理几百M数据集时,方法1花时200s左右,方法2花时10s)!!!
【pandas.apply()函数】 
版权声明:本文为CSDN博主「鸿燕藏锋」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yanjiangdi/article/details/94764562

    推荐阅读