按边距(“全部”)值列对 Pandas 数据透视表进行排序

2024-05-23

我试图根据 pandas 数据透视表中的行总和对最后一列/边距/aggrfunc 进行降序排序。我知道我在这里错过了一些简单的东西,但我无法弄清楚。

数据框/数据透视表:

WIDGETS         
DATE    2/1/16  2/2/16  2/3/16  All
NAME                
PERSON1 43      5               48
PERSON2         4       7       11
PERSON3         56      143     199

我需要它做的也是按 aggfunc/margins 排序:

WIDGETS         
DATE    2/1/16  2/2/16  2/3/16  All
NAME                
PERSON3         56      143     199
PERSON1 43      5               48
PERSON2         4       7       11

pt = pd.pivot_table(df,values=['WIDGETS'],index=['NAME'],columns=['DATE'],aggfunc=len,fill_value='',margins=True,margins_name='WIDGETS')
pt.sort_values(by='WIDGETS',ascending=False,inplace=True)

Error:ValueError:无法按多索引中的列 WIDGETS 排序,您需要显式提供所有级别

建议?


您可以在函数中使用元组sort_values http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.sort_values.html和参数ascending:

print pt
        WIDGETS                  
DATE     2/1/16 2/2/16 2/3/16 All
NAME                             
PERSON1       1      2          3
PERSON2       2      4      3   9
PERSON3       1             1   2
All           4      6      4  14

pt.sort_values(by=('WIDGETS', 'All'), ascending=False,inplace=True)
print pt
        WIDGETS                  
DATE     2/1/16 2/2/16 2/3/16 All
NAME                             
All           4      6      4  14
PERSON2       2      4      3   9
PERSON1       1      2          3
PERSON3       1             1   2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按边距(“全部”)值列对 Pandas 数据透视表进行排序 的相关文章

随机推荐