简体   繁体   English

如何用熊猫融化多索引中的第一级列

[英]How to melt first level column in multiindex with pandas

I have this multiindex dataframe: 我有这个多索引数据框:

df=pd.DataFrame(np.zeros((3,6)))
df.columns=pd.MultiIndex.from_arrays([['a','a','b','b','c','c'],[1,2,1,2,1,2]])
df['a']=10
df['b']=20
df['c']=40

print(df)

Out[10]: 
    a       b       c    
    1   2   1   2   1   2
0  10  10  20  20  40  40
1  10  10  20  20  40  40
2  10  10  20  20  40  40

And i want to get this: 我想得到这个:

Out[10]: 

   names  1   2
0      a  10  10
1      a  10  10
2      a  10  10
0      b  20  20
1      b  20  20
2      b  20  20
0      c  40  40
1      c  40  40
2      c  40  40

I know that I can separate each column first level in a dataframe and then do an append, but I'm looking for a better way to do it. 我知道我可以将一个数据帧中的每个列的第一级分开,然后进行追加,但是我正在寻找一种更好的方法。

I've tried to do it with the command melt but I always get an error. 我已经尝试使用命令melt来做到这一点,但是我总是遇到错误。

Any ideas? 有任何想法吗?

Use unstack : 使用unstack

print(df.unstack()
        .unstack(level=1)
        .reset_index(level=1, drop=True)
        .rename_axis('names')
        .reset_index())
  names   1   2
0     a  10  10
1     a  10  10
2     a  10  10
3     b  20  20
4     b  20  20
5     b  20  20
6     c  40  40
7     c  40  40
8     c  40  40

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM