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 pd if __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)
输出结果如下所示:
b d e
utah 1.950737 0.318299 0.387724
ohio 1.584464 -0.082965 0.984757
texas 0.477283 -2.774454 -0.532181
oregon -0.851359 -0.654882 1.026698 b 2.802096
d 3.092753
e 1.558879
dtype: float64
utah 1.632438
ohio 1.667428
texas 3.251737
oregon 1.878057
dtype: float64
3、性能比较
import numpy as np
import pandas as pd def my_test(a, b):
return a + b if __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)
输出结果如下:
a b c
0 -1.745471 foo 0.723341
1 -0.378998 bar 0.229188
2 -1.468866 foo 0.788046
3 -1.323347 bar 0.323051
4 -1.894372 foo 2.216768
5 -0.649059 bar 0.858149 a b c value1
0 -1.745471 foo 0.723341 -1.022130
1 -0.378998 bar 0.229188 -0.149810
2 -1.468866 foo 0.788046 -0.680820
3 -1.323347 bar 0.323051 -1.000296
4 -1.894372 foo 2.216768 0.322396
5 -0.649059 bar 0.858149 0.209089 a b c value1 vaule2
0 -1.745471 foo 0.723341 -1.022130 -1.022130
1 -0.378998 bar 0.229188 -0.149810 -0.149810
2 -1.468866 foo 0.788046 -0.680820 -0.680820
3 -1.323347 bar 0.323051 -1.000296 -1.000296
4 -1.894372 foo 2.216768 0.322396 0.322396
5 -0.649059 bar 0.858149 0.209089 0.209089
注意:当数据量很大时,对于简单的逻辑处理建议方法2(个人处理几百M数据集时,方法1花时200s左右,方法2花时10s)!!!
版权声明:本文为CSDN博主「鸿燕藏锋」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yanjiangdi/article/details/94764562
pandas.apply()函数的更多相关文章
- pandas apply()函数参数 args
#!/usr/bin/python import pandas as pd data = {'year':[2000,2001,2002,2001,2002],'value':[1.5,1.7,3.6 ...
- pandas DataFrame apply()函数(1)
之前已经写过pandas DataFrame applymap()函数 还有pandas数组(pandas Series)-(5)apply方法自定义函数 pandas DataFrame 的 app ...
- pandas DataFrame apply()函数(2)
上一篇pandas DataFrame apply()函数(1)说了如何通过apply函数对DataFrame进行转换,得到一个新的DataFrame. 这篇介绍DataFrame apply()函数 ...
- 【转】Pandas的Apply函数——Pandas中最好用的函数
转自:https://blog.csdn.net/qq_19528953/article/details/79348929 import pandas as pd import datetime #用 ...
- pandas的map函数与apply函数的区别
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(4,3),columns=list("ABC ...
- Pandas的函数应用、层级索引、统计计算
1.Pandas的函数应用 1.apply 和 applymap 1. 可直接使用NumPy的函数 示例代码: # Numpy ufunc 函数 df = pd.DataFrame(np.random ...
- pandas 常用函数整理
pandas常用函数整理,作为个人笔记. 仅标记函数大概用途做索引用,具体使用方式请参照pandas官方技术文档. 约定 from pandas import Series, DataFrame im ...
- Python apply函数
Python apply函数 1.介绍 apply函数是pandas里面所有函数中自由度最高的函数.该函数如下: DataFrame.apply(func, axis=0, broadcast=Fal ...
- 【转载】pandas常用函数
原文链接:https://www.cnblogs.com/rexyan/p/7975707.html 一.import语句 import pandas as pd import numpy as np ...
随机推荐
- 201871010119-帖佼佼《面向对象程序设计(java)》第7周学习总结
博文正文开头格式:(2分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.co ...
- python学习-while
"""while 条件: 条件满足时,干的事情.如果条件一直满足,一直去重复的执行代码.直接条件不满足为止,停止循环."""# salary ...
- NodeJS2-4环境&调试----global变量
global全局对象,希望把全局访问到的对象,属性和方法等挂到global对象上,除了用户自定义的方法外,global本身默认带着一些常用的属性和方法的 CommonJS Buffer.process ...
- C# MD5加密字符串
/// <summary> /// 用MD5加密字符串,可选择生成16位或者32位的加密字符串 /// </summary> /// <param name=" ...
- 后台管理tab栏滑动解决方案
后台管理系统中比较常见的布局是左边菜单栏,右边tab切换栏,但是一般的tab组件不包含tab页过多的切换问题的,所以需要个性化实现,本文的实现方案是滑动鼠标滚轮绑定tab达到切换的效果,先上一个动态图 ...
- CentOS7自动化安装PXE方案
目的 无人值守批量安装CentOS7 安装条件 一台带有PXE协议支持NIC的待安装主机 一台存放安装文件的服务器,如NFS,HTTP或FTP服务器 Kickstart 生成的配置文件(ks.cfg) ...
- HA Joker Vulnhub Walkthrough
下载地址: https://www.vulnhub.com/entry/ha-joker,379/ 主机扫描: ╰─ nmap -p- -sV -oA scan 10.10.202.132Starti ...
- sudo 1.2.27 - Security Bypass
EXP: https://www.exploit-db.com/exploits/47502?utm_source=dlvr.it&utm_medium=twitter 漏洞复现: 具体配置参 ...
- Android binder流程简图
前段时间因为一个bug,研究了一下android binder的大概流程,方便自己理解画了一个框图. 粗点线箭头是继承关系,细实线箭头是调用关系.
- Android utils 工具类之MD5加密 MD5Utils
实际开发过程中,密码不会保存明文形式,容易被别人窃取. MD5加密是不可逆的加密算法,只能由明文转换成密文. 但是有些人通过将明文对应的密文保存在数据库中,进行查询破解密文.为防止这种解密,根据许多对 ...