让我们给它一个带有多级标题的表:
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
请确保这些操作的列具有适当的形状。
答案 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