跟aggregate一样,transform也是一个有着严格条件的特殊函数:传入的函数只能产生两种结果,要么产生一个可以传播的标量值(如np.mean),要么产生一个相同大小的结果数组。最一般化的GroupBy方法是apply,apply会将待处理的对象拆分成多个片段,然后对各片段调用传入的函数,最后尝试将各片段组合到一起。

apply方法

举例:根据分组选出最高的5个tip_pct值。

首先,编写一个选取指定列具有最大值的行的函数。(原文比较拗口,其实就是“在 指定列找出最大值,然后把这个值所在的行选取出来。”)

In [1]: def top(df,n=5,column='tip_pct'):     ...: return df.sort_index(by=column)[-n:]     ...: 

新写法:注意与上面的差别

In [2]: def top(df,n=5,column='计划发出单量'):    ...: return df.sort_values(by=column)[-n:]    ...:In [3]: top(tips,n=6)Out[3]: total_bill  tip  smoker   day time  size tip_pct109   14.31       4.00 Yes      Sat Dinner 2   0.279525183   23.17       6.50 Yes      Sun Dinner 4   0.280535232   11.61      3.39 No      Sat Dinner 2   0.29199067    3.07       1.00 Yes     Sat Dinner 1   0.325733178   9.60       4.00 Yes     Sun Dinner 2   0.416667172   7.25       5.15 Yes     Sun Dinner 2   0.710345

如果对smoker分组并用该函数调用apply,就会得到:

top函数在DataFrame的各个片段上调用,然后结果由pandas.concat组装到一起,并以分组名称进行了标记。于是,最终结果就有了一个层次化索引,其内层索引值来自原DataFrame。

如果传给apply的函数能够接受其他参数或关键字,则可以将这些内容放在函数名后面一并传入:

注意:除这些基本用法之外,能否充分发挥apply的威力很大程度上取决于你的创造力。传入的那个函数能做什么全由你说了算,它只需返回一个pandas对象或标量值即可。本章后续部分的示例主要用于讲解如何利用groupby解决各种各样的问题。

在GroupBy对象上调用describe:

在GroupBy中,当调用诸如describe之类的方法时,实际上只是应用了下面两条代码的快捷方式而已:

f = lambda x: x.describe()

Grouped.apply(f)

禁止分组键:group_keys=False

分组键会跟原始对象的索引共同构成结果对象中的层次化索引。将group_keys=False传入groupby即可禁止该效果:

python好书推荐

推荐一本python好书,初学者和数据分析必备,小编已读:

.describe() python_python的apply应用:一般性的“拆分-应用-合并”,附加详细讲解相关推荐

  1. Goldengate的拆分与合并

    在使用Goldengate作为复制解决方案时,随着负载的增加,replicat组件常常是最先出现性能瓶颈的.为了适应不断增加的负载,就需要拆分replicat来实现并行复制,本文介绍Goldengat ...

  2. opencv-python 9.4 拆分及合并图像通道

    opencv-python 教程 https://www.cnblogs.com/Undo-self-blog/p/8424220.html 9.4 拆分及合并图像通道 有时我们需要对 BGR 三个通 ...

  3. linux下将多个文件去除文件头合并_命令行生存指南:拆分与合并 | Linux 中国

    这一节将会介绍 Linux 命令行下的文件拆分与合并操作. 作者:Psiace (本文字数:2706,阅读时长大约:3 分钟) 作为一个工程师,我们经常与命令行打交道,但除了工作用的命令,你是否尝试过 ...

  4. 拆分命令_命令行生存指南:拆分与合并 | Linux 中国

    导读:这一节将会介绍 Linux 命令行下的文件拆分与合并操作. 本文字数:2706,阅读时长大约:3分钟作者:Psiace 作为一个工程师,我们经常与命令行打交道,但除了工作用的命令,你是否尝试过让 ...

  5. 11.4 优化拆分和合并(region)

    2019独角兽企业重金招聘Python工程师标准>>> 一.手动分割 为了避免拆分/合并风暴,关闭region自动拆分.合并,手动调用split和major_compact命令. 1 ...

  6. tar包zip的拆分与合并

    有时候我们会遇到较大的文件在网络上传输不便,可以将其拆分传输,然后再合并,可以加快传输速率,同时传输出错时可以节约时间. tar包的拆分与合并 拆tar.gz包: tar -czf - big.tar ...

  7. Excel中文本的拆分与合并

    两端对齐的巧妙使用 office2019中叫做 内容重排(同样位于填充菜单栏下) 调整列宽,点击快速重排,文字会自动根据列宽拆分或合并文字到行 多单元格的合并的几个技巧 填写要合并的实例,选择整列,C ...

  8. PDF怎么拆分/合并? 3款 PDF 拆分和合并工具分享

    以PDF格式传输文档已广泛使用很长时间,也是传输文档的最常见方式之一.但是,当涉及到从众多PDF文件中提取特定页面并将它们放在一起以制作新的PDF文档时,我们将需要专用软件来合并和拆分多个PDF. 现 ...

  9. 80行代码自己动手写一个表格拆分与合并小工具(文末附工具下载)

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 瑶池阿母绮窗开,黄竹歌声动地哀. ...

最新文章

  1. C语言中字符型在计算机中的存储
  2. CV技术在医疗领域中有哪些应用?Salesforce、谷歌、斯坦福综述文章登上Nature子刊...
  3. C++中基于Crt的内存泄漏检测
  4. 程序设计基础(c语言)复习大纲,《程序设计基础-C》复习大纲.doc
  5. Kubernetes管理员的11条 安全军规
  6. Java中高维数组或高维矩阵构建及运算
  7. PyTorch 1.0 中文文档:torch.autograd
  8. java常用的空对象 null
  9. Bailian2743 字符串判等【字符串】
  10. paip. everything exe 文件不能启动的解决
  11. vscode中文乱码
  12. 轻松学习Linux之入门篇
  13. 宾夕法尼亚大学发明了第一代电子管计算机,新手计算机基础入门
  14. vue 检测ie版本_vue判断当前浏览器为IE低版本,给出升级提示;IE11及其他浏览器正常使用-Go语言中文社区...
  15. IT人跨界:开了咖啡店却从没想过赚钱
  16. 给WordPress加个评论关闭时间提示
  17. 在php中phr是什么意思,phr. 相当多的_____
  18. 【Excel VBA】银行卡信用卡卡号校验功能函数
  19. phal接口查询显示中多余方法处理
  20. 使用FreeType绘制字体

热门文章

  1. 嵌入式linux添加环境变量,Linux环境变量
  2. android .9编译,在Ubuntu 9.04下编译Android源码
  3. android 机器人动画,Android 5.X与Android4.X版本机器人动画的区别以及制作动画的方法...
  4. mysql dos 下切换连接_如何在dos下连接进入mysql对数据库进行操作
  5. 计算机自然语言的中国科学家,中科院教授王斌加入小米 任自然语言处理首席科学家...
  6. linux上的中国象棋游戏下载,中国象棋下载_中国象棋最新下载_玩一玩游戏
  7. 【JAVA基础篇】运算符
  8. ios 系统提示框_ios13终于能屏蔽系统更新了!附详细教程
  9. eview面板数据之混合回归模型_【视频教程】Eviews系列25|面板数据回归分析之Hausman检验及本章常见问题解答...
  10. rebase参数以及注意事项