python DataFrame中stack()方法、unstack()方法和pivot()方法浅析


Posted in Python onApril 06, 2022

1.stack()

stack()用于将列索引转换为最内层的行索引,这样叙述比较抽象,看示例就容易理解啦:

准备一组数据,给其设置双索引。

import pandas as pd
data = [['A类', 'a1', 123, 224, 254], ['A类', 'a2', 234, 135, 444], ['A类', 'a3', 345, 241, 324],
        ['B类', 'b1', 112, 412, 466], ['B类', 'b2', 224, 235, 345], ['B类', 'b3', 369, 214, 352],
        ['C类', 'c1', 236, 251, 485], ['C类', 'c2', 378, 216, 515], ['C类', 'c3', 135, 421, 312],
        ['D类', 'd1', 306, 325, 496], ['D类', 'd2', 147, 235, 524], ['D类', 'd3', 520, 222, 267]]
df = pd.DataFrame(data=data, columns=['类别', '编号', 'A指标', 'B指标', 'C指标'])
df = df.set_index(['类别', '编号'])
print(df)

python DataFrame中stack()方法、unstack()方法和pivot()方法浅析

df = df.stack()
print(df)

python DataFrame中stack()方法、unstack()方法和pivot()方法浅析

如图,成功将索引列之外的 A指标,B指标,C指标三列放在了同一列。

此时的df,不再是一个DataFrame,而变为了一个Series对象。:

print(type(df))

python DataFrame中stack()方法、unstack()方法和pivot()方法浅析

该Series的index列不同于原DataFrame的index列,而是在原DataFrame的index列的基础上,又增加了从右边合并过来的部分:

print(df.index)

python DataFrame中stack()方法、unstack()方法和pivot()方法浅析

此时Values为:

print(df.values)

python DataFrame中stack()方法、unstack()方法和pivot()方法浅析

2. unstack()

unstack是stack的逆向操作。

在上述示例的代码的基础上,对上边的df继续调用unstack()方法:

df1 = df.unstack()
print(df1)

python DataFrame中stack()方法、unstack()方法和pivot()方法浅析

可以看到unstack变回了原来的样子。

3. pivot()

这里对于上边例子中的数据稍作调整:

不设置多重索引

import pandas as pd
data = [['A类', '1', 123, 224, 254], ['A类', '2', 234, 135, 444], ['A类', '3', 345, 241, 324],
        ['B类', '1', 112, 412, 466], ['B类', '2', 224, 235, 345], ['B类', '3', 369, 214, 352],
        ['C类', '1', 236, 251, 485], ['C类', '2', 378, 216, 515], ['C类', '3', 135, 421, 312],
        ['D类', '1', 306, 325, 496], ['D类', '2', 147, 235, 524], ['D类', '3', 520, 222, 267]]
df = pd.DataFrame(data=data, columns=['类别', '编号', 'A指标', 'B指标', 'C指标'])
print(df)

python DataFrame中stack()方法、unstack()方法和pivot()方法浅析

df2 = df.pivot(index='编号', columns='类别', values='A指标')
print(df2)

python DataFrame中stack()方法、unstack()方法和pivot()方法浅析

index和columns分别指设定那一列的值为index,设置那一列的值为columns。values指表格要体现的指标。

df3 = df.pivot(index='类别', columns='编号', values='A指标')
print(df3)

python DataFrame中stack()方法、unstack()方法和pivot()方法浅析

总结

到此这篇关于python DataFrame中stack()方法、unstack()方法和pivot()方法的文章就介绍到这了,更多相关DataFrame stack()、unstack()和pivot()内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python使用clear方法清除字典内全部数据实例
Jul 11 Python
hmac模块生成加入了密钥的消息摘要详解
Jan 11 Python
Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】
Dec 26 Python
一篇文章了解Python中常见的序列化操作
Jun 20 Python
python3.6+django2.0+mysql搭建网站过程详解
Jul 24 Python
python扫描线填充算法详解
Feb 19 Python
如何在mac下配置python虚拟环境
Jul 06 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
Jul 07 Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
Sep 14 Python
python如何实现递归转非递归
Feb 25 Python
Python爬虫之用Xpath获取关键标签实现自动评论盖楼抽奖(二)
Jun 07 Python
Python数组变形的几种实现方法
May 30 Python
浅谈Python中对象是如何被调用的
Apr 06 #Python
Python实现猜拳与猜数字游戏的方法详解
python字符串的一些常见实用操作
Apr 06 #Python
python中字符串String及其常见操作指南(方法、函数)
Apr 06 #Python
Python Numpy库的超详细教程
进行数据处理的6个 Python 代码块分享
Apr 06 #Python
 分享一个Python 遇到数据库超好用的模块
Apr 06 #Python
You might like
xml+php动态载入与分页
2006/10/09 PHP
php 冒泡排序 交换排序法
2011/05/10 PHP
laravel安装zend opcache加速器教程
2015/03/02 PHP
PHP抓取网页、解析HTML常用的方法总结
2015/07/01 PHP
php微信开发之谷歌测距
2018/06/14 PHP
laravel5 Eloquent 实现事务方式
2019/10/21 PHP
JavaScript国旗变换效果代码
2008/08/13 Javascript
EXT窗口Window及对话框MessageBox
2011/01/27 Javascript
自己动手开发jQuery插件教程
2011/08/25 Javascript
js实现div拖动动画运行轨迹效果代码分享
2015/08/27 Javascript
js实现滚动条滚动到页面底部继续加载
2015/12/19 Javascript
深入浅出 jQuery中的事件机制
2016/08/23 Javascript
jQuery实现自动调用和触发某个事件的方法
2016/11/18 Javascript
如何实现json数据可视化详解
2016/11/24 Javascript
Bootstrap 设置datetimepicker在屏幕上面弹出设置方法
2017/03/21 Javascript
ES6模块化的import和export用法方法总结
2017/08/08 Javascript
完美解决iview 的select下拉框选项错位的问题
2018/03/02 Javascript
js统计页面上每个标签的数量实例代码
2018/05/29 Javascript
angular中子控制器向父控制器传值的实例
2018/10/08 Javascript
webpack4+react多页面架构的实现
2018/10/25 Javascript
ES6入门教程之let、const的使用方法
2019/04/13 Javascript
详解微信小程序开发(项目从零开始)
2019/06/06 Javascript
[01:33]DOTA2上海特级锦标赛 LIQUID战队完整宣传片
2016/03/16 DOTA
[00:56]跨越时空加入战场 全新祈求者身心“失落奇艺侍祭”展示
2019/07/20 DOTA
Python深入学习之内存管理
2014/08/31 Python
python获取Linux下文件版本信息、公司名和产品名的方法
2014/10/05 Python
利用Fn.py库在Python中进行函数式编程
2015/04/22 Python
深入理解Python装饰器
2016/07/27 Python
聊聊python里如何用Borg pattern实现的单例模式
2019/06/06 Python
建筑施工员岗位职责
2013/11/26 职场文书
竞选班长自荐书范文
2014/03/09 职场文书
眼镜促销方案
2014/03/15 职场文书
目标责任书格式范文
2015/05/11 职场文书
党员干部学习十八届五中全会精神心得体会
2016/01/05 职场文书
MySQL表的增删改查基础教程
2021/04/07 MySQL
Vue监视数据的原理详解
2022/02/24 Vue.js