多层排序- Pandas pivot_table

eagi6jfj  于 2023-04-18  发布在  其他
关注(0)|答案(1)|浏览(230)

我正在寻找一个解决方案来对pandas数据透视表进行排序,就像在Excel数据透视表中一样,根据聚合值来确定第一级的顺序。我找到了一个使用pd.append的解决方案。一个警告告诉我,pd.append将来将不可用,因此我应该使用pd.concat
我还没有设法解决我的问题与pd.concat
This is the solution with pd.append

kx1ctssn

kx1ctssn1#

concat应该这样使用:

out = pd.concat([
      df_pivot.iloc[:-1]
              .assign(sort=lambda x: x['Totals'].groupby(level=0).transform('sum'))
              .sort_values(['sort','Name','Totals'], 
                           ascending=[False,True,False], kind='mergesort')
              .drop('sort', axis=1),
      df_pivot.iloc[[-1]] # slicing as DataFrame, not Series
           ])

输出:

Year            2019  2020  Totals
Name   A   B                      
Brian  foo one    20     0      20
       zz  xy     10     0      10
       bar two     0     9       9
           one     0     8       8
       zz  zz      0     5       5
Peter  foo one    20     0      20
       bar two     0     9       9
           one     6     0       6
Amy    foo two    11     0      11
           one     4     0       4
Totals            71    31     102

相关问题