【问题标题】:Pandas pivot table Nested Sorting Part 2Pandas 数据透视表嵌套排序第 2 部分
【发布时间】:2016-09-07 01:15:06
【问题描述】:

鉴于此数据框和数据透视表:

import pandas as pd
df=pd.DataFrame({'A':['x','y','z','x','y','z'],
                 'B':['one','one','one','two','two','two'],
                 'C':[7,5,3,4,1,6]})
df


    A   B       C
0   x   one     7
1   y   one     5
2   z   one     3
3   x   two     4
4   y   two     1
5   z   two     6

table = pd.pivot_table(df, index=['A', 'B'],aggfunc=np.sum)

table
A  B  
x  one    7
   two    4
y  one    5
   two    1
z  one    3
   two    6
Name: C, dtype: int64

我想对数据透视表进行排序,使值在“C”内按降序排列。

像这样:

A  B  
x  one    7
   two    4
y  one    5
   two    1
z  two    6
   one    3

提前致谢!

【问题讨论】:

  • 你的意思是在'C'内降序吗?
  • 是的,对不起。问题已更正。

标签: sorting python-3.x pandas pivot-table


【解决方案1】:

这应该可以工作

df.groupby(['A'])['B', 'C'].apply(lambda x: x.set_index('B').sort_values('C', ascending=0))

【讨论】:

  • 我在笑这有多好,如果这有道理的话。谢谢!
  • @DanceParty2 不,这没有意义,这也让我发笑。
【解决方案2】:

试试这个:

In [12]: pd.pivot_table(df, index=['A', 'B'],aggfunc='sum').reset_index().sort_values(by=['A','C'], ascending=[1,0])
Out[12]:
   A    B  C
0  x  one  7
1  x  two  4
2  y  one  5
3  y  two  1
5  z  two  6
4  z  one  3

【讨论】:

    猜你喜欢
    • 2016-09-07
    • 2016-09-05
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    • 1970-01-01
    • 2019-05-21
    • 2016-09-15
    • 2016-06-10
    相关资源
    最近更新 更多