在pandas中使用groupby时恢复分层列索引

时间:2016-05-13 12:29:35

标签: python pandas

我在pandas中使用groupby来计算数据中pandas中的一些聚合统计信息,其中数据框中的列使用分层索引进行组织。 对于计算的统计信息,我想在最后返回表格表格,其中组被重新转换为具有组值的列,例如,像:

index = pd.MultiIndex.from_tuples([('A', 'a'), ('B', 'b')])
df = pd.DataFrame(np.random.randn(8,2), columns=index)

导致例如这个数据框

          A         B
          a         b
0  0.511157  0.334748
1  0.031113 -0.477456
2  0.288080 -0.258238
3  0.138467 -0.955547
4 -0.087873  0.017494
5 -0.667393  1.190039
6 -0.068245 -1.282864
7 -0.996982  0.589667

现在我使用groupby计算统计数据并重置索引以重新创建平面数据框:

df.groupby([('A','a')]).mean().reset_index()
     (A, a)         B
                    b
0 -0.996982  0.589667
1 -0.667393  1.190039
2 -0.087873  0.017494
3 -0.068245 -1.282864
4  0.031113 -0.477456
5  0.138467 -0.955547
6  0.288080 -0.258238
7  0.511157  0.334748

我怎样才能实现('A', 'a')再次成为多索引的一部分,希望以自动方式?或者另有说明:有没有办法在groupby操作期间保留分层列结构。

2 个答案:

答案 0 :(得分:4)

对我而言,将参数 Task.Run(() => { //DoSomeWork(); }) .ContinueWith((t) => { // Return when done. _regionManager.RequestNavigate("MyTarget", nameof(SomePage)); }) .ContinueWith((t) => { _regionManager.RequestNavigate("MyTarget", nameof(SomeErrorPage)); }, TaskContinuationOptions.OnlyOnFaulted); 添加到groupby

as_index=False

答案 1 :(得分:2)

最简单的方法是重新分配原始列:

In [182]:
df1 = df.groupby([('A','a')]).mean().reset_index()
df1.columns = df.columns
df1

Out[182]:
          A         B
          a         b
0 -0.857465 -0.761948
1 -0.263677  0.538251
2  0.067710 -1.038906
3  0.345584 -0.425514
4  0.478200  0.119345
5  0.639305  0.047526
6  1.528260  1.956677
7  3.114834 -0.532462