【问题标题】:Pivot table where columns have a multilevel index列具有多级索引的数据透视表
【发布时间】:2019-01-30 18:28:45
【问题描述】:

我似乎无法弄清楚如何使用具有多级索引的列来旋转数据框。

我已经看到了这个related post,但似乎无法弄清楚如何将它应用于我的问题。

如果我有df:

df = pd.DataFrame.from_dict({('Mule Creek', 'ATI'): {5: 5.0, 6: 6.0, 7: 7.0, 8: 8.0, 9: 9.0},
 ('Mule Creek', 'ATIMR'): {5: 0.04115419564079352,
  6: 0.04115419564079352,
  7: 0.04115419564079352,
  8: 0.04115419564079352,
  9: 0.04115419564079352},
 ('Saddle Mtn.', 'ATI'): {5: 5.0, 6: 6.0, 7: 7.0, 8: 8.0, 9: 9.0},
 ('Saddle Mtn.', 'ATIMR'): {5: 0.05260285024705004,
  6: 0.05260285024705004,
  7: 0.05260285024705004,
  8: 0.05260285024705004,
  9: 0.05260285024705004},
 ('Calvert Creek', 'ATI'): {5: 5.0, 6: 6.0, 7: 7.0, 8: 8.0, 9: 9.0},
 ('Calvert Creek', 'ATIMR'): {5: 0.0068488368752893354,
  6: 0.0068488368752893354,
  7: 0.0068488368752893354,
  8: 0.0068488368752893354,
  9: 0.0068488368752893354}})

我想创建一个数据透视表,其中ATI 成为索引并使用`aggfunc='mean'。

我试过了:

df= df.unstack(level=-1)
df =df.pivot_table(values=tmp[0],index='level_0',columns='level_1',aggfunc=np.mean)

但我明白了:

KeyError: 1.0

想要的结果:

         ATI  ATIMR
5        5.0  0.0335353
6        6.0  0.0335353
7        7.0  0.0335353
8        8.0  0.0335353
9        9.0  0.0335353

【问题讨论】:

    标签: python pandas pivot-table


    【解决方案1】:

    这是你需要的吗?

    newdf=df.stack(level=0).mean(level=0)
    newdf
    Out[886]: 
       ATI     ATIMR
    5  5.0  0.033535
    6  6.0  0.033535
    7  7.0  0.033535
    8  8.0  0.033535
    9  9.0  0.033535
    

    【讨论】:

    • 正是我需要的!
    猜你喜欢
    • 2020-08-30
    • 2020-10-17
    • 2018-06-26
    • 1970-01-01
    • 2016-08-29
    • 1970-01-01
    • 1970-01-01
    • 2017-08-20
    • 1970-01-01
    相关资源
    最近更新 更多