熊猫:将多标题列的某个级别旋转到行索引中

时间:2018-07-21 14:42:30

标签: python pandas

让我们给它一个带有多级标题的表:

cols = pd.MultiIndex.from_arrays([['a','a', 'b','b'], [0,1,0,1]], 
                                 names=('I','II'))
df = pd.DataFrame(np.random.rand(3,4),columns=cols)
df.index.name = 'idx' 

I          a                   b
II         0         1         0         1
idx
0    0.851031  0.294414  0.503343  0.081551
1    0.333798  0.965863  0.206981  0.898823
2    0.520647  0.868081  0.571291  0.275164

如何将第一列索引I“透视”到行索引?继续我的示例,我想实现以下目标:

    II          0         1 
I   idx
a   0    0.851031  0.294414  
    1    0.333798  0.965863  
    2    0.520647  0.868081  
b   0    0.503343  0.081551  
    1    0.206981  0.898823  
    2    0.571291  0.275164  

请确保这些操作的列具有适当的形状。

1 个答案:

答案 0 :(得分:5)

您可以将2个呼叫链接到unstack

library(tidyverse)
list(df1[1:3],df1[c(1,4:5)]) %>%
  map(rename_all,gsub,pattern="Day.",replacement="") %>%
  bind_rows(.id = "Day")
#   Day ID Var1 Var2
# 1   1  1    1    2
# 2   1  2    5    6
# 3   2  1    3    4
# 4   2  2    7    8