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异步回调机制实现和使用方法
Nov 26 Python
python实现的简单FTP上传下载文件实例
Jun 30 Python
详解JavaScript编程中的window与window.screen对象
Oct 26 Python
python3+PyQt5实现使用剪贴板做复制与粘帖示例
Jan 24 Python
python中文件变化监控示例(watchdog)
Oct 16 Python
python re模块findall()函数实例解析
Jan 19 Python
一篇文章读懂Python赋值与拷贝
Apr 19 Python
python使用turtle库与random库绘制雪花
Jun 22 Python
Python 判断文件或目录是否存在的实例代码
Jul 19 Python
python读取excel进行遍历/xlrd模块操作
Jul 12 Python
python中numpy.empty()函数实例讲解
Feb 05 Python
在Python 中将类对象序列化为JSON
Apr 06 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
让CodeIgniter数据库缓存自动过期的处理的方法
2014/06/12 PHP
php生成图片验证码的实例讲解
2015/08/03 PHP
php精确的统计在线人数的方法
2015/10/21 PHP
使用javascipt---实现二分查找法
2013/04/10 Javascript
JavaScript判断变量是否为undefined的两种写法区别
2013/12/04 Javascript
js实现的类似于asp数据字典的数据类型代码实例
2014/09/03 Javascript
jQuery实现响应浏览器缩放大小并改变背景颜色
2014/10/31 Javascript
jQuery实现折线图的方法
2015/02/28 Javascript
jquery实现向下滑出的二级导航下滑菜单效果
2015/08/25 Javascript
ajax在兼容模式下失效的快速解决方法
2016/03/22 Javascript
Angular中的$watch方法详解
2017/09/18 Javascript
VUE基于NUXT的SSR 服务端渲染
2018/11/30 Javascript
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
生成无限制的微信小程序码的示例代码
2019/09/20 Javascript
vue el-table实现行内编辑功能
2019/12/11 Javascript
解决Element中el-date-picker组件不回填的情况
2020/11/07 Javascript
[00:23]魔方之谜解锁款式
2018/12/20 DOTA
用Python的Flask框架结合MySQL写一个内存监控程序
2015/11/07 Python
Python 类与元类的深度挖掘 II【经验】
2016/05/06 Python
python中的随机函数random的用法示例
2018/01/27 Python
Python实现的查询mysql数据库并通过邮件发送信息功能
2018/05/17 Python
学习python分支结构
2019/05/17 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
2019/08/21 Python
有关Tensorflow梯度下降常用的优化方法分享
2020/02/04 Python
Python基于DB-API操作MySQL数据库过程解析
2020/04/23 Python
Python 使用 PyQt5 开发的关机小工具分享
2020/07/16 Python
python rsa-oaep加密的示例代码
2020/09/23 Python
使用css实现android系统的loading加载动画
2019/07/25 HTML / CSS
新西兰最大的连锁超市:Countdown
2020/06/04 全球购物
精选干货:Java精选笔试题附答案
2014/01/18 面试题
八年级历史教学反思
2014/01/10 职场文书
计算机求职自荐信范文
2014/04/19 职场文书
2014年网管工作总结
2014/12/11 职场文书
酒店工程部经理岗位职责
2015/04/09 职场文书
2015年效能监察工作总结
2015/04/23 职场文书
《蜜蜂引路》教学反思
2016/02/22 职场文书