【Python】pandas轴旋转stack和unstack用法详解

本文转自:https://blog.csdn.net/Asher117/article/details/85047899

仅作为个人笔记之用,如有其它需求,请联系该文原创作者。

摘要
前面给大家分享了pandas做数据合并的两篇[pandas.merge]和[pandas.cancat]的用法。今天这篇主要讲的是pandas的DataFrame的轴旋转操作,stack和unstack的用法。

首先,要知道以下五点:
1.stack:将数据的列“旋转”为行
2.unstack:将数据的行“旋转”为列
3.stack和unstack默认操作为最内层
4.stack和unstack默认旋转轴的级别将会成果结果中的最低级别(最内层)
5.stack和unstack为一组逆运算操作
第一点和第二点以及第五点比较好懂,可能乍看第三点和第四点会不太理解,没关系,看看具体下面的例子,你就懂了。

创建DataFrame,行索引名为state,列索引名为number
import pandas as pd
import numpy as np
data = pd.DataFrame(np.arange(6).reshape((2,3)),index=pd.Index(['Ohio','Colorado'],name='state')
                   ,columns=pd.Index(['one','two','three'],name='number'))

在这里插入图片描述
将DataFrame的列旋转为行,即stack操作。
result = data.stack()
result
在这里插入图片描述

从下图中结果来理解上述点4,stack操作后将列索引number旋转为行索引,并且置于行索引的最内层(外层为索引state),也就是将旋转轴(number)的结果置于 最低级别。

将DataFrame的行旋转为列,即unstack操作。
result.unstack()
在这里插入图片描述
 

从下面结果理解上述点3,unstack操作默认将内层索引number旋转为列索引。
同时,也可以指定分层级别或者索引名称来指定操作级别,下面做错同样会得到上面的结果。

在这里插入图片描述


stack和unstack逆运算
s1 = pd.Series([0,1,2,3],index=list('abcd'))
s2 = pd.Series([4,5,6],index=list('cde'))
data2 = pd.concat([s1,s2],keys=['one','two'])
data2

在这里插入图片描述

data2.unstack().stack()
  •  

在这里插入图片描述

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值