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 npimport pandas as pd

f = 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.494279ohio 0.955676 -1.889499 0.522151texas 1.891144 -0.670588 0.106530oregon -0.062372 0.991231 0.294464b 1.953516d 2.880730e 1.016430dtype: float64

utah 1.600766ohio 2.845175texas 2.561732oregon 1.053603dtype: float64

3、性能比较

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) # 方法1print(df)

df['Value2'] = df['a'] + df['c'] # 方法2print(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.094462

a 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.023212

a 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)!!!

http://shenzhen.offcn.com/

python中raw函数_Python apply函数相关推荐

  1. python中dir用法_Python dir() 函数

    Python dir() 函数 描述 dir() 函数不带参数时,返回当前范围内的变量.方法和定义的类型列表:带参数时,返回参数的属性.方法列表.如果参数包含方法__dir__(),该方法将被调用.如 ...

  2. python中dir用法_Python dir()函数

    您可以使用内置的dir()函数列出一个定义对象的标识符.例如,对于一个模块,包括在模块中定义的函数,类和变量. 当你给dir()提供一个模块名字时,它返回在那个模块中定义的名字的列表.当没有为其提供参 ...

  3. python中eps参数_Python minimize函数:向约束字典传递附加参数

    我不知道如何通过minimize函数将其他参数传递给约束字典.我可以成功地将其他参数传递给目标函数. constraints参数是一个dict,它有一个字段"args",其中arg ...

  4. python中factor函数_Python入门-函数

    函数 在维基百科上函数式这样描述的: 函数在数学中为两集合间的一种对应关系:输入值集合中的每项元素皆能对应唯一一项输出值集合中的元素. 此处的函数区别于我们数学上的函数,在编程世界中,函数(Funct ...

  5. Python中常用最神秘的函数! lambda 函数深度总结!

    今天我们来学习 Python 中的 lambda 函数,并探讨使用它的优点和局限性 Let's do it! 什么是 Python 中的 Lambda 函数 lambda 函数是一个匿名函数(即,没有 ...

  6. python中实现延时回调普通函数示例代码

    这篇文章主要给大家介绍了关于python中实现延时回调普通函数的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧. 回调函 ...

  7. Python中常用的高阶函数

    Python 中常用的高阶函数 ① filter(function,iterable)filter(function, iterable)filter(function,iterable)   过滤器 ...

  8. Python中的startswith和endswith函数使用实例

    Python中的startswith和endswith函数使用实例 在Python中有两个函数分别是startswith()函数与endswith()函数,功能都十分相似,startswith()函数 ...

  9. python整数转换字符串_使用Python中的str()函数将整数值转换为字符串

    python整数转换字符串 Given an integer value and we have to convert the value to the string using str() func ...

最新文章

  1. 平面法向量,点云法向量估计及可视化
  2. java_web学习(8)会话与状态管
  3. Mat转CImage
  4. STL源码剖析---迭代器失效小结
  5. RabbitMQ管理(5)——集群管理
  6. ch341a编程和ttl刷机区别_土豪金CH341a编程器 开箱晒物
  7. [转载]jquery cookie的用法
  8. block相对于delegate有哪些优缺点?
  9. 如何在NVIDIA(英伟达)官网下载老版本Toolkit-SDK---例如下载CUDA Toolkit 8.0
  10. ORB_SLAM3_一张图说明ORB-SLAM中的ORB特征提取和图像匹配算法流程
  11. SQL2005下载版本之区别
  12. java基础代码-实现键盘输入
  13. 教你如何安装配置Windows7系统 IIS IIS7.5本地浏览测试网站 完整版介绍
  14. 识别PDF文字的软件,得力OCR文字识别
  15. 计算2015年4月6日是一年中的第几星期
  16. 主板usb接口全部失灵_主板usb接口全部失灵
  17. 微电子电路——反相器延迟时间
  18. python使用pyecharts绘制地图
  19. 分布式定时任务原理以及解决方案-指定时间执行定时任务
  20. yolo3各部分代码(超详细)

热门文章

  1. Java Spring注解实现分析之@requestMapping工作原理
  2. SAP CRM呼叫中心toolbar的cancel按钮会导致session清理
  3. SAP CRM Fiori Simulation pipeline应用功能一览
  4. 错误消息 parent.relativePath points at wrong local POM的处理方法
  5. 电大 计算机应用基础 专科 教材,2016年电大计算机应用基础(专科).doc
  6. 仿 小米运动_小米有品上架“黑科技”床垫,让你睡在“空气”上,改变睡眠体验...
  7. js 设置password placeholder样式_装机必备!超级详细的BIOS设置图解
  8. linux如何加设磁盘配额,Linux系统攻略:如何为添加的硬盘做配额
  9. 复制出来的文本都是大写_vi或vim怎么复制粘贴
  10. go 语言 mysql_Go语言基础之操作MySQL