Pandas 轴旋转stack和unstack

pandas 的 DataFrame 的轴旋转操作,stackunstack

首先,要知道以下五点:

  1. stack:将数据的列“旋转”为行
  2. unstack:将数据的行“旋转”为列
  3. stack和unstack默认操作为最内层
  4. stackunstack默认旋转轴的级别将会成果结果中的最低级别(最内层)
  5. stackunstack为一组逆运算操作
  • 创建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

undefined

  • 将DataFrame的列旋转为行,即stack操作。

undefined

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

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

undefined

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

undefined

  • stackunstack 逆运算
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

undefined

data2.unstack()

undefined

data2.unstack().stack()

undefined

参考

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

Update time: 2020-05-25

results matching ""

    No results matching ""