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

摘要

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

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

  1. 创建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'))
data

在这里插入图片描述

  1. 将DataFrame的列旋转为行,即stack操作。
result = data.stack()
result

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

  1. 将DataFrame的行旋转为列,即unstack操作。
result.unstack()

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

  1. 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()

在这里插入图片描述

我们下次再见,如果还有下次的话!!!
欢迎关注微信公众号:516数据工作室
516数据工作室

猜你喜欢

转载自blog.csdn.net/Asher117/article/details/85047899