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中使用item()方法遍历字典的例子
Aug 26 Python
Django Admin实现上传图片校验功能
Mar 06 Python
实例探究Python以并发方式编写高性能端口扫描器的方法
Jun 14 Python
python字符串过滤性能比较5种方法
Jun 22 Python
python编程羊车门问题代码示例
Oct 25 Python
Python算法之求n个节点不同二叉树个数
Oct 27 Python
PyTorch 1.0 正式版已经发布了
Dec 13 Python
在python下读取并展示raw格式的图片实例
Jan 24 Python
Python for循环及基础用法详解
Nov 08 Python
Python 去除字符串中指定字符串
Mar 05 Python
python 多线程中join()的作用
Oct 29 Python
一小时学会TensorFlow2之基本操作2实例代码
Sep 04 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
fleaphp crud操作之find函数的使用方法
2011/04/23 PHP
php提取身份证号码中的生日日期以及验证是否为成年人的函数
2015/09/29 PHP
PHP实现的一致性Hash算法详解【分布式算法】
2018/03/31 PHP
Laravel框架基于中间件实现禁止未登录用户访问页面功能示例
2019/01/17 PHP
JavaScript 模仿vbs中的 DateAdd() 函数的代码
2007/08/13 Javascript
extjs 学习笔记(三) 最基本的grid
2009/10/15 Javascript
jquery分页对象使用示例
2014/04/01 Javascript
javascript实现微信分享
2014/12/23 Javascript
js实现键盘Enter键提交表单的方法
2015/05/27 Javascript
nodejs修复ipa处理过的png图片
2016/02/17 NodeJs
Node.js服务器环境下使用Mock.js拦截AJAX请求的教程
2016/05/23 Javascript
jQuery 中ajax异步调用的四种方式
2016/06/28 Javascript
JS实现给json数组动态赋值的方法示例
2020/03/19 Javascript
vue代码分割的实现(codesplit)
2018/11/13 Javascript
vue-cli 目录结构详细讲解总结
2019/01/15 Javascript
在Vue项目中使用jsencrypt.js对数据进行加密传输的方法
2019/04/17 Javascript
JS阻止事件冒泡的方法详解
2019/08/26 Javascript
[01:39:04]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第二场 2月1日
2021/03/11 DOTA
python+mysql实现简单的web程序
2014/09/11 Python
python实现mysql的单引号字符串过滤方法
2015/11/14 Python
Python爬取京东的商品分类与链接
2016/08/26 Python
Python 实现域名解析为ip的方法
2019/02/14 Python
Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】
2019/03/18 Python
Django Rest framework三种分页方式详解
2019/07/26 Python
Python实现决策树并且使用Graphviz可视化的例子
2019/08/09 Python
python如何修改文件时间属性
2021/02/05 Python
纯CSS3实现圆角效果(含IE兼容解决方法)
2014/05/07 HTML / CSS
浅析border-radius如何兼容IE
2016/04/19 HTML / CSS
Ashford台湾:以折扣价提供奢华的男女用表款
2019/12/04 全球购物
韩语专业本科生求职信
2013/10/01 职场文书
大学军训感言1000字
2014/02/25 职场文书
药剂专业毕业生求职信
2014/06/24 职场文书
2014年检察院个人工作总结
2014/12/09 职场文书
行政处罚告知书
2015/07/01 职场文书
观看《筑梦中国》纪录片心得体会
2016/01/18 职场文书
简单谈谈Python面向对象的相关知识
2021/06/28 Python