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中Django 后台自定义表单控件
Mar 28 Python
python利用rsa库做公钥解密的方法教程
Dec 10 Python
PyQt5每天必学之进度条效果
Apr 19 Python
python 2.7.13 安装配置方法图文教程
Sep 18 Python
pygame游戏之旅 如何制作游戏障碍
Nov 20 Python
python采集百度搜索结果带有特定URL的链接代码实例
Aug 30 Python
python通过安装itchat包实现微信自动回复收到的春节祝福
Jan 19 Python
python next()和iter()函数原理解析
Feb 07 Python
Python实现ATM系统
Feb 17 Python
Pycharm激活码激活两种快速方式(附最新激活码和插件)
Mar 12 Python
如何Tkinter模块编写Python图形界面
Oct 14 Python
Python 实现二叉查找树的示例代码
Dec 21 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
PHP登录环节防止sql注入的方法浅析
2014/06/30 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
2016/12/19 PHP
图片自动更新(说明)
2006/10/02 Javascript
不安全的常用的js写法
2009/09/15 Javascript
js parentElement和offsetParent之间的区别
2010/03/23 Javascript
JavaScript.The.Good.Parts阅读笔记(二)作用域&闭包&减缓全局空间污染
2010/11/16 Javascript
jQuery ReferenceError: $ is not defined 错误的处理办法
2013/05/10 Javascript
当jQuery1.7遇上focus方法的问题
2014/01/26 Javascript
Javascript Objects详解
2014/09/04 Javascript
js识别uc浏览器的代码
2015/11/06 Javascript
AngularJS变量及过滤器Filter用法分析
2016/11/22 Javascript
详解jQuery lazyload 懒加载
2016/12/19 Javascript
详解使用vue脚手架工具搭建vue-webpack项目
2017/05/10 Javascript
浅析从vue源码看观察者模式
2018/01/29 Javascript
Bootstrap 实现表格样式、表单布局的实例代码
2018/12/09 Javascript
vue实现鼠标经过动画
2019/10/16 Javascript
微信小程序实现自定义底部导航
2020/11/18 Javascript
[03:57]DOTA2英雄梦之声_第03期_幻影刺客
2014/06/21 DOTA
[31:29]完美世界DOTA2联赛PWL S3 INK ICE vs Magma 第一场 12.20
2020/12/23 DOTA
python中常用检测字符串相关函数汇总
2015/04/15 Python
Sublime开发python程序的示例代码
2018/01/24 Python
python实现朴素贝叶斯分类器
2018/03/28 Python
对python读写文件去重、RE、set的使用详解
2018/12/11 Python
python实现大文件分割与合并
2019/07/22 Python
Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
2020/04/11 Python
python Django 反向访问器的外键冲突解决
2020/05/20 Python
HTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电池状态)
2014/05/07 HTML / CSS
canvas像素点操作之视频绿幕抠图
2018/09/11 HTML / CSS
shallow copy和deep copy的区别
2016/05/09 面试题
南京某公司笔试题
2013/01/27 面试题
电气自动化个人求职信范文
2014/02/03 职场文书
运动会致辞稿50字
2014/02/04 职场文书
《十六年前的回忆》教学反思
2014/02/14 职场文书
关于环保的活动方案
2014/08/25 职场文书
2015年师德师风自我评价范文
2015/03/05 职场文书
Springboot/Springcloud项目集成redis进行存取的过程解析
2021/12/04 Redis