Pandas 重塑(stack)和轴向旋转(pivot)的实现


Posted in Python onJuly 22, 2019
import numpy as np
import pandas as pd
from pandas import Series,DataFrame

一、重塑

  • stack:将数据的列索引旋转为行索引
  • unstack:将数据的行索引旋转为列索引
df = DataFrame({'水果':['苹果','梨','草莓'],
        '数量':[3,4,5],
        '价格':[4,5,6]})
print(df)

   价格  数量  水果
0   4   3  苹果
1   5   4   梨
2   6   5  草莓

1.stack()

stack_df = df.stack()
print(stack_df)

0  价格     4
   数量     3
   水果    苹果
1  价格     5
   数量     4
   水果     梨
2  价格     6
   数量     5
   水果    草莓

dtype: object

2.unstack()

print(stack_df.unstack())

  价格 数量  水果
0  4  3  苹果
1  5  4   梨
2  6  5  草莓

3.通过level参数指定旋转轴的层次(默认level=-1)

print(stack_df.unstack(level=0))

     0  1   2
价格   4  5   6
数量   3  4   5
水果  苹果  梨  草莓

二、轴向旋转(pivot)

pivot(index,columns,values):将index指定为行索引,columns是列索引,values则是DataFrame中的值

df = DataFrame({'水果种类':['苹果','苹果','梨','梨','草莓','草莓'],
        '信息':['价格','数量','价格','数量','价格','数量'],
        '值':[4,3,5,4,6,5]})
print(df)

   信息  值 水果种类
0  价格  4   苹果
1  数量  3   苹果
2  价格  5    梨
3  数量  4    梨
4  价格  6   草莓
5  数量  5   草莓

将水果种类作为行索引,将信息作为列索引

print(df.pivot('水果种类','信息','值'))

信息    价格  数量
水果种类       
梨      5   4
苹果     4   3
草莓     6   5

pivot可以用set_index和unstack等价的实现

print(df.set_index(['水果种类','信息']).unstack())

      值  
信息   价格 数量
水果种类     
梨     5  4
苹果    4  3
草莓    6  5

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用7z解压软件备份文件脚本分享
Feb 21 Python
Python中的上下文管理器和with语句的使用
Apr 17 Python
Python 比较文本相似性的方法(difflib,Levenshtein)
Oct 15 Python
python处理DICOM并计算三维模型体积
Feb 26 Python
Python中的 is 和 == 以及字符串驻留机制详解
Jun 28 Python
python3实现raspberry pi(树莓派)4驱小车控制程序
Feb 12 Python
python中使用input()函数获取用户输入值方式
May 03 Python
keras实现图像预处理并生成一个generator的案例
Jun 17 Python
Python 如何测试文件是否存在
Jul 31 Python
Python 整行读取文本方法并去掉readlines换行\n操作
Sep 03 Python
Python图片检索之以图搜图
May 31 Python
Python装饰器的练习题
Nov 23 Python
Pandas透视表(pivot_table)详解
Jul 22 #Python
django认证系统 Authentication使用详解
Jul 22 #Python
django Admin文档生成器使用详解
Jul 22 #Python
django表单的Widgets使用详解
Jul 22 #Python
Python代码使用 Pyftpdlib实现FTP服务器功能
Jul 22 #Python
超简单的Python HTTP服务
Jul 22 #Python
对python 中re.sub,replace(),strip()的区别详解
Jul 22 #Python
You might like
php session安全问题分析
2011/06/24 PHP
浅析SVN常见问题及解决方法
2013/06/21 PHP
PHP PDO操作MySQL基础教程
2017/06/05 PHP
实例化php类时传参的方法分析
2020/06/05 PHP
csdn 博客的css样式 v3
2009/02/24 Javascript
jQuery 自动增长的文本输入框实现代码
2010/04/02 Javascript
js 数值转换为3位逗号分隔的示例代码
2014/02/19 Javascript
JS访问SWF的函数用法实例
2015/07/01 Javascript
JQuery中Ajax()的data参数类型实例分析
2015/12/15 Javascript
早该知道的7个JavaScript技巧
2016/06/21 Javascript
深入浅析knockout源码分析之订阅
2016/07/12 Javascript
js简单实现图片延迟加载的方法
2016/07/19 Javascript
js获取当前时间(昨天、今天、明天)
2016/11/23 Javascript
百度地图JavascriptApi Marker平滑移动及车头指向行径方向
2017/03/13 Javascript
Angular2管道Pipe及自定义管道格式数据用法实例分析
2017/11/29 Javascript
JS高级技巧(简洁版)
2018/07/29 Javascript
Mint UI实现A-Z字母排序的城市选择列表
2018/12/28 Javascript
Vue匿名插槽与作用域插槽的合并和覆盖行为
2019/04/22 Javascript
vue里的data要用return返回的原因浅析
2019/05/28 Javascript
详解Vuex下Store的模块化拆分实践
2019/07/31 Javascript
Vue + Node.js + MongoDB图片上传组件实现图片预览和删除功能详解
2020/04/29 Javascript
Python3.5基础之NumPy模块的使用图文与实例详解
2019/04/24 Python
Python面向对象程序设计之类和对象、实例变量、类变量用法分析
2020/03/23 Python
浅析与CSS3的loading动画加载相关的transition优化
2015/05/18 HTML / CSS
css3 伪类选择器快速复习小结
2019/09/10 HTML / CSS
Right-on官方网站:日本知名的休闲服装品牌
2019/07/12 全球购物
New Balance俄罗斯官方网上商店:购买运动鞋
2020/03/02 全球购物
请解释在new与override的区别
2012/10/29 面试题
工作表现自我评价
2014/02/08 职场文书
推荐信怎么写
2014/05/09 职场文书
2014年秋季开学典礼致辞
2014/08/02 职场文书
个人总结与自我评价
2014/09/18 职场文书
习近平在党的群众路线教育实践活动总结大会上的讲话
2014/10/21 职场文书
保留意见审计报告
2015/06/05 职场文书
2015年秋季学校开学标语
2015/07/16 职场文书
Nginx 路由转发和反向代理location配置实现
2021/11/11 Servers