Pandas对DataFrame单列/多列进行运算(map, apply, transform, agg)


Posted in Python onJune 14, 2020

1.单列运算

在Pandas中,DataFrame的一列就是一个Series, 可以通过map来对一列进行操作:

df['col2'] = df['col1'].map(lambda x: x**2)

其中lambda函数中的x代表当前元素。可以使用另外的函数来代替lambda函数,例如:

define square(x): 
  return (x ** 2) 
 
df['col2'] = df['col1'].map(square)

2.多列运算

 apply()会将待处理的对象拆分成多个片段,然后对各片段调用传入的函数,最后尝试将各片段组合到一起。

要对DataFrame的多个列同时进行运算,可以使用apply,例如col3 = col1 + 2 * col2:

df['col3'] = df.apply(lambda x: x['col1'] + 2 * x['col2'], axis=1)

其中x带表当前行,可以通过下标进行索引。

示例2

In [44]: f = lambda x : x.max()-x.min()

In [45]: df.apply(f)
Out[45]:
data1  5.042275
data2  1.967290
dtype: float64

In [46]: df.apply(f,axis=1)
Out[46]:
0  2.810074
1  1.009774
2  0.537183
3  0.813714
4  1.750022
dtype: float64

applymap()

用DataFrame的applymap方法,可以将函数应用到元素级的数据上。

In [47]: f = lambda x : x+1

In [48]: df.applymap(f)
Out[48]:
   data1   data2
0 -1.332263 1.477812
1 0.284755 1.294528
2 0.066644 0.603827
3 1.757402 2.571117
4 3.710012 1.959990

Series也有一个元素级函数应用的方法map

In [49]: df['data1']
Out[49]:
0  -2.332263
1  -0.715245
2  -0.933356
3  0.757402
4  2.710012
Name: data1, dtype: float64

In [50]: df['data1'].map(f)
Out[50]:
0  -1.332263
1  0.284755
2  0.066644
3  1.757402
4  3.710012
Name: data1, dtype: float64

3.分组运算

可以结合groupby与transform来方便地实现类似SQL中的聚合运算的操作:

df['col3'] = df.groupby('col1')['col2'].transform(lambda x: (x.sum() - x) / x.count())

在transform函数中x.sum()与x.count()与SQL类似,计算的是当前group中的和与数量,还可以将transform的结果作为一个一个映射来使用, 例如:

sumcount = df.groupby('col1')['col2'].transform(lambda x: x.sum() + x.count()) 
df['col1'].map(sumcount)

对col1进行一个map,得到对应的col2的运算值。

4.聚合函数

结合groupby与agg实现SQL中的分组聚合运算操作,需要使用相应的聚合函数:

df['col2'] = df.groupby('col1').agg({'col1':{'col1_mean': mean, 'col1_sum‘': sum}, 'col2': {'col2_count': count}})

上述代码生成了col1_mean, col1_sum与col2_count列。

示例2

In [52]: df.agg(['mean','sum'])
Out[52]:
     data1   data2
mean -0.102690 0.581455
sum -0.513449 2.907274

函数 说明
count 分组中非Nan值的数量
sum 非Nan值的和
mean 非Nan值的平均值
median 非Nan值的算术中间数
std,var 标准差、方差
min,max 非Nan值的最小值和最大值
prob 非Nan值的积
first,last 第一个和最后一个非Nan值

到此这篇关于Pandas对DataFrame单列/多列进行运算(map, apply, transform, agg)的文章就介绍到这了,更多相关Pandas map apply transform agg内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python encode和decode的妙用
Sep 02 Python
python的urllib模块显示下载进度示例
Jan 17 Python
Python异常处理操作实例详解
May 10 Python
Win10下python 2.7.13 安装配置方法图文教程
Sep 18 Python
Python函数中的可变长参数详解
Sep 12 Python
python错误调试及单元文档测试过程解析
Dec 19 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
Apr 08 Python
基于jupyter代码无法在pycharm中运行的解决方法
Apr 21 Python
在Sublime Editor中配置Python环境的详细教程
May 03 Python
浅谈opencv自动光学检测、目标分割和检测(连通区域和findContours)
Jun 04 Python
Python+uiautomator2实现自动刷抖音视频功能
Apr 29 Python
python异常中else的实例用法
Jun 15 Python
Python脚本破解压缩文件口令实例教程(zipfile)
Jun 14 #Python
pandas创建DataFrame的7种方法小结
Jun 14 #Python
Python中zipfile压缩文件模块的基本使用教程
Jun 14 #Python
pandas DataFrame运算的实现
Jun 14 #Python
Numpy中ndim、shape、dtype、astype的用法详解
Jun 14 #Python
DataFrame 数据合并实现(merge,join,concat)
Jun 14 #Python
python中pandas库中DataFrame对行和列的操作使用方法示例
Jun 14 #Python
You might like
php桌面中心(一) 创建数据库
2007/03/11 PHP
PHP入门学习笔记之一
2010/10/12 PHP
PHP时间戳格式全部汇总 (获取时间、时间戳)
2016/06/13 PHP
php 使用fopen函数创建、打开文件详解及实例代码
2016/09/24 PHP
PHP中数组转换为SimpleXML教程
2019/01/27 PHP
PHP中十六进制颜色与RGB颜色值互转的方法
2019/03/18 PHP
javaScript 判断字符串是否为数字的简单方法
2009/07/25 Javascript
js判断当页面无法回退时关闭网页否则就history.go(-1)
2014/08/07 Javascript
jquery中实现时间戳与日期相互转换
2016/04/12 Javascript
走进AngularJs之过滤器(filter)详解
2017/02/17 Javascript
详解Webpack多环境代码打包的方法
2018/08/03 Javascript
微信小程序开发背景图显示功能
2018/08/08 Javascript
Vue实现图片与文字混输效果
2019/12/04 Javascript
js实现详情页放大镜效果
2020/10/28 Javascript
vue 解决mintui弹窗弹起来,底部页面滚动bug问题
2020/11/12 Javascript
Python实现的简单文件传输服务器和客户端
2015/04/08 Python
requests和lxml实现爬虫的方法
2017/06/11 Python
python利用标准库如何获取本地IP示例详解
2017/11/01 Python
python之线程通过信号pyqtSignal刷新ui的方法
2019/01/11 Python
使用python绘制二维图形示例
2019/11/22 Python
numpy 返回函数的上三角矩阵实例
2019/11/25 Python
Python3加密解密库Crypto的RSA加解密和签名/验签实现方法实例
2020/02/11 Python
PyQt5 如何让界面和逻辑分离的方法
2020/03/24 Python
如何使用Python自动生成报表并以邮件发送
2020/10/15 Python
HTML5中使用json对象的实例代码
2018/09/10 HTML / CSS
李维斯法国官网:Levi’s法国
2019/07/13 全球购物
马德里运动鞋商店:Nigra Mercato
2020/02/16 全球购物
递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
2013/04/28 面试题
中专生自荐信
2013/10/12 职场文书
学校安全教育制度
2014/01/31 职场文书
新书发布会策划方案
2014/06/09 职场文书
中国梦演讲稿5分钟
2014/08/19 职场文书
升国旗演讲稿
2014/09/05 职场文书
科级干部群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
统计员岗位职责范本
2015/04/14 职场文书
小学生作文写作技巧100例,非常实用!
2019/07/08 职场文书