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 pdf = lambda x: x.max()-x.min()df = pd.DataFrame(np.random.randn(4,3),columns=list('bde'),index=['utah', 'ohio', 'texas', 'oregon'])
print(df)t1 = df.apply(f)
print(t1)t2 = df.apply(f, axis=1)
print(t2)

输出结果如下所示:

b         d         e
utah    1.106486  0.101113 -0.494279
ohio    0.955676 -1.889499  0.522151
texas   1.891144 -0.670588  0.106530
oregon -0.062372  0.991231  0.294464b    1.953516
d    2.880730
e    1.016430
dtype: float64utah      1.600766
ohio      2.845175
texas     2.561732
oregon    1.053603
dtype: float64

3、性能比较

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
df = pd.DataFrame({'a': np.random.randn(6),'b': ['foo', 'bar'] * 3,'c': np.random.randn(6)})def my_test(a, b):return a + bprint(df)df['Value'] = df.apply(lambda row: my_test(row['a'], row['c']), axis=1) # 方法1
print(df)df['Value2'] = df['a'] + df['c']  # 方法2
print(df)

输出结果如下:

a    b         c
0 -1.194841  foo  1.648214
1 -0.377554  bar  0.496678
2  1.524940  foo -1.245333
3 -0.248150  bar  1.526515
4  0.283395  foo  1.282233
5  0.117674  bar -0.094462a    b         c     Value
0 -1.194841  foo  1.648214  0.453374
1 -0.377554  bar  0.496678  0.119124
2  1.524940  foo -1.245333  0.279607
3 -0.248150  bar  1.526515  1.278365
4  0.283395  foo  1.282233  1.565628
5  0.117674  bar -0.094462  0.023212a    b         c     Value    Value2
0 -1.194841  foo  1.648214  0.453374  0.453374
1 -0.377554  bar  0.496678  0.119124  0.119124
2  1.524940  foo -1.245333  0.279607  0.279607
3 -0.248150  bar  1.526515  1.278365  1.278365
4  0.283395  foo  1.282233  1.565628  1.565628
5  0.117674  bar -0.094462  0.023212  0.023212

注意:当数据量很大时,对于简单的逻辑处理建议方法2(个人处理几百M数据集时,方法1花时200s左右,方法2花时10s)!!!

Python apply函数相关推荐

  1. python apply()函数

    python apply函数的具体的含义: apply(func [, args [, kwargs ]]) 函数用于当函数参数已经存在于一个元组或字典中时,间接地调用函数.args是一个包含将要提供 ...

  2. python apply函数取数据中的后四位_python 实现rolling和apply函数的向下取值操作

    我就废话不多说了,大家还是直接看代码吧! import pandas as pd def get_under_rolling(df,window,user,name): df[name] = df[u ...

  3. python apply函数的用法_Python pandas.DataFrame.apply函数方法的使用

    DataFrame.apply(func, axis=0, broadcast=None, raw=False, reduce=None, result_type=None, args=(), **k ...

  4. python apply函数_8 个 Python 高效数据分析的技巧

    (给Python开发者加星标,提升Python技能) 编译:专知/Yingying, Jiahui,英文原作:Conor Dewey 不管是参加Kaggle比赛,还是开发一个深度学习应用,第一步总是数 ...

  5. python apply函数_python玄学之 apply函数的axis参数

    不知道小伙伴们学习python的dataframe时,是否遇到一个疑惑,apply参数axis的具体含义是什么? 官方文档解释如下:https://pandas.pydata.org/pandas-d ...

  6. python apply函数的用法

    函数格式为:apply(func,*args,**kwargs) 用途:当一个函数的参数存在于一个元组或者一个字典中时,用来间接的调用这个函数,并肩元组或者字典中的参数按照顺序传递给参数 解析:arg ...

  7. python里apply用法_Python apply函数的用法

    Python apply函数的用法 发布于 2014-08-07 21:02:24 | 674 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一种面向对象.解释型计 ...

  8. python使用statsmodels包中的robust.mad函数以及pandas的apply函数计算dataframe中所有数据列的中位数绝对偏差(MAD)

    python使用statsmodels包中的robust.mad函数以及pandas的apply函数计算dataframe中所有数据列的中位数绝对偏差(MAD.Median Absolute Devi ...

  9. python 多进程 multiprocessing 进程池 pool apply_async()函数与apply()函数的用法

    apply函数主要用于传递不定参数,主进程会被阻塞到函数执行结束.也就是说只有apply里面的内容被执行完了,才会进行执行主函数的内容. 参考文章1:python进程池Pool的apply与apply ...

最新文章

  1. npm 卸载_完全免费!GitHub发布软件包管理服务:NPM瑟瑟发抖
  2. php 文档在线查看器,Office Web Viewer 在线Office文档查看器API
  3. 英语学习APP的案例分析
  4. jar打包 剔除第三方依赖以及它的依赖_maven打包成第三方jar包且把pom依赖包打入进来的方法...
  5. JavaScript中null与undefined的比较
  6. 在jupyter界面误删了jupyter notebook
  7. nutshell_Nutshell中的Java 8语言功能-第1部分
  8. C++远征之封装篇——对象数组,对象成员
  9. 你尝试登录的服务器语言不通,七骑士国内服务器正式上线后,各种登录问题解决方案汇总...
  10. 在html中 标记 lt pre gt,HTML pre标记会导致换行符
  11. Centos7 Redis安装
  12. 随机生成名字的Android页面
  13. spring注入sessionfactory
  14. 阿里数据中台维度建模规范、维度模型设计及模型实施方法论
  15. 一个遮罩层怎么遮罩两个图层_遮罩动画是由两个图层组成的,一个是遮罩层,一个是被遮罩层。...
  16. 亚马逊linux密码,Linux、Centos、Ubuntu亚马逊服务器开启密码远程,启用root账号
  17. python遥控汽车玩具_分享 | 撞坏遥控车后,有个技术大牛爸爸是种怎样的体验
  18. android 10系统下载地址,Android 10正式版
  19. qt在表格中如何画线_Qt之表格控件蚂蚁线
  20. Apache Impala: Impala的java开发

热门文章

  1. oracle 删除表从回收站恢复
  2. Cocostudio 1.6 下载地址
  3. 【转】Java 内存模型及GC原理
  4. [hadoop新实战2]hadoop伪分布式安装序列(支持ubuntu和redhat)
  5. (转)IIS7 配置ASP.NET 2.0, WCF, ASP.NET MVC
  6. java web分层的思想
  7. 【测试】ABAP发送HTML格式邮件FM
  8. 【常识】高尔夫计分规则
  9. 自定义维护视图变量(Maintenance view variant)
  10. ABAP实例:如何设计和使用自定义的权限对象