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 21 Python
轻松掌握python设计模式之策略模式
Nov 18 Python
Python调用C++程序的方法详解
Jan 24 Python
解决Django模板无法使用perms变量问题的方法
Sep 10 Python
Python及Django框架生成二维码的方法分析
Jan 31 Python
python实现泊松图像融合
Jul 26 Python
python 实现读取一个excel多个sheet表并合并的方法
Feb 12 Python
Django视图扩展类知识点详解
Oct 25 Python
使用python接受tgam的脑波数据实例
Apr 09 Python
如何实现更换Jupyter Notebook内核Python版本
May 18 Python
Python定时任务APScheduler原理及实例解析
May 30 Python
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
Jun 07 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 和 XML: 使用expat函数(一)
2006/10/09 PHP
php SQL防注入代码集合
2008/04/25 PHP
上传文件先创建目录 再上传到目录里面去
2010/12/29 PHP
php以fastCGI的方式运行时文件系统权限问题及解决方法
2015/05/11 PHP
什么是PHP文件?如何打开PHP文件?
2017/06/27 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
2017/11/13 PHP
JavaScript 组件之旅(二)编码实现和算法
2009/10/28 Javascript
utf-8编码引起js输出中文乱码的解决办法
2010/06/23 Javascript
深入解析JavaScript中的变量作用域
2013/12/06 Javascript
Jquery Ajax xmlhttp请求成功问题
2015/02/04 Javascript
JavaScript AOP编程实例
2015/06/16 Javascript
JavaScript中rem布局在react中的应用
2015/12/09 Javascript
JavaScript SweetAlert插件实现超酷消息警告框
2016/01/28 Javascript
bootstrap3 兼容IE8浏览器!
2016/05/02 Javascript
jQuery 特性操作详解及实例代码
2016/09/29 Javascript
HTML5基于Tomcat 7.0实现WebSocket连接并实现简单的实时聊天
2016/10/31 Javascript
JavaScript获取服务器端时间的方法
2016/11/29 Javascript
Vue.js实战之通过监听滚动事件实现动态锚点
2017/04/04 Javascript
React Component存在的几种形式详解
2018/11/06 Javascript
详解VUE调用本地json的使用方法
2019/05/15 Javascript
基于JavaScript 实现拖放功能
2019/09/12 Javascript
初学vue出现空格警告的原因及其解决方案
2019/10/31 Javascript
深入理解webpack process.env.NODE_ENV配置
2020/02/23 Javascript
python控制windows剪贴板,向剪贴板中写入图片的实例
2018/05/31 Python
Python Excel处理库openpyxl使用详解
2019/05/09 Python
python yield关键词案例测试
2019/10/15 Python
html5 canvas的绘制文本自动换行的示例代码
2018/09/17 HTML / CSS
澳大利亚领先的武术用品和健身器材供应商:SMAI
2019/03/24 全球购物
写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度
2015/11/18 面试题
保险专业大专生求职信
2013/10/26 职场文书
英语系本科生求职信范文
2013/12/18 职场文书
大学毕业感言100字
2014/02/03 职场文书
大学开学计划书
2014/04/30 职场文书
换届选举主持词
2015/07/03 职场文书
三严三实·严以修身心得体会
2016/01/15 职场文书
2016年“12.4”法制宣传日活动总结
2016/04/01 职场文书