多级索引中转置一个级别

3
假设我有一个带有多级索引的数据框:
                   col1   col2
 date        id    
 2016-04-05   A     100     99
 2016-04-05   B     101     98
 2016-04-05   C     102     95
 ...
 2016-04-12   A      90     65
 2016-04-12   B      91     62
 2016-04-12   C      93     64

如何将col1中的'id'级别的索引旋转到一个框架中,其中索引仅为“date”,列是'id'的值?

       date     A     B     C 
 2016-04-05   100   101   102
 2016-04-06    80    87    83
 ...
 2016-04-12    90    91    93

谢谢

1个回答

3

我认为你可以先删除col2,然后使用unstackdroplevel将多层索引中的级别删除,再使用rename_axis进行重命名,最后使用reset_index来重置索引:

df = df.drop('col2', axis=1).unstack('id')
df.columns = df.columns.droplevel(0)
df = df.rename_axis(None, axis=1).reset_index()
print df
        date    A    B    C
0 2016-04-05  100  101  102
1 2016-04-12   90   91   93

使用pivot的下一个解决方案:

print df.reset_index()
        .pivot(index='date', columns='id', values='col1')
        .rename_axis(None, axis=1)
        .reset_index()

        date    A    B    C
0 2016-04-05  100  101  102
1 2016-04-12   90   91   93

1
在对df执行unstack操作之前,删除col2列,那么你的答案就是它 :-) - Mohamed Ali JAMAOUI

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接