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 相关文章推荐
推荐11个实用Python库
Jan 23 Python
Python类的定义、继承及类对象使用方法简明教程
May 08 Python
在Python的Flask框架中验证注册用户的Email的方法
Sep 02 Python
Python选课系统开发程序
Sep 02 Python
Python 爬虫多线程详解及实例代码
Oct 08 Python
关于Python的一些学习总结
May 25 Python
在PyTorch中Tensor的查找和筛选例子
Aug 18 Python
基于keras 模型、结构、权重保存的实现
Jan 24 Python
Python关于反射的实例代码分享
Feb 20 Python
python开发实例之Python的Twisted框架中Deferred对象的详细用法与实例
Mar 19 Python
python 如何用urllib与服务端交互(发送和接收数据)
Mar 04 Python
python 制作一个gui界面的翻译工具
May 14 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
什么是短波收听SWL
2021/03/01 无线电
PHP得到某段时间区间的时间戳 php定时任务
2012/04/12 PHP
用PHP即时捕捉PHP中的错误并发送email通知的实现代码
2013/01/19 PHP
js和php邮箱地址验证的实现方法
2014/01/09 PHP
thinkphp缓存技术详解
2014/12/09 PHP
PHP基于工厂模式实现的计算器实例
2015/07/16 PHP
thinkPHP模板算术运算相关函数用法分析
2016/07/12 PHP
学习面向对象之面向对象的基本概念:对象和其他基本要素
2010/11/30 Javascript
Javascript编写2048小游戏
2015/07/07 Javascript
遮罩层点击按钮弹出并且具有拖动和关闭效果(两种方法)
2015/08/20 Javascript
JS中JSON对象和String之间的互转及处理技巧
2016/04/06 Javascript
微信小程序开发之大转盘 仿天猫超市抽奖实例
2016/12/08 Javascript
jQuery插件HighCharts绘制2D带有Legend的饼图效果示例【附demo源码下载】
2017/03/10 Javascript
重新理解JavaScript的六种继承方式
2017/03/24 Javascript
微信小程序实现星星评价效果
2018/11/02 Javascript
详解jquery和vue对比
2019/04/16 jQuery
简述pm2常用命令集合及配置文件说明
2019/05/30 Javascript
vuejs element table 表格添加行,修改,单独删除行,批量删除行操作
2020/07/18 Javascript
Python基类函数的重载与调用实例分析
2015/01/12 Python
Python中http请求方法库汇总
2016/01/06 Python
python hash每次调用结果不同的原因
2019/11/21 Python
python绘制BA无标度网络示例代码
2019/11/21 Python
pytorch对梯度进行可视化进行梯度检查教程
2020/02/04 Python
python模拟斗地主发牌
2020/04/22 Python
Python实现钉钉/企业微信自动打卡的示例代码
2021/02/02 Python
Mio Skincare美国官网:身体紧致及孕期身体护理
2017/03/05 全球购物
将世界上最美丽的摄影作品转化为艺术作品:Photos.com
2017/11/28 全球购物
一道Delphi上机题
2012/06/04 面试题
师范生实习的个人自我鉴定
2013/10/20 职场文书
房屋继承公证书
2014/04/10 职场文书
安全生产一岗双责责任书
2014/07/28 职场文书
个人更名证明
2015/06/23 职场文书
法定代表人免职证明
2015/06/24 职场文书
2016春季运动会前导词
2015/11/25 职场文书
护理自荐信
2019/05/14 职场文书
无线电通信名词解释
2022/02/18 无线电