按组对数据透视表进行排序

时间:2019-12-11 20:59:49

标签: python pandas dataframe pivot-table

我正在努力为熊猫使用数据透视表。

我有一个包含3列的数据框:公司名称,日期和订单数。

我正在尝试以一种能够透视数据框架的方式,使我能够看到十大最大客户。

例如,假设我有

name | date | orders
John | 2017 | 100
John | 2018 | 200
John | 2019 | 300
Mary | 2017 | 50
Mary | 2018 | 50
Mary | 2019 | 1000

我想以一种能够像这样看到它的方式进行旋转

name
date  2017 | 2018 | 2019
John  100  | 200  | 300
Mary  50   | 50   | 1000

并按订单总数排序,因此在这种情况下,Mary应该先走,因为她总共有1100个订单。

我无法进行分组排序,它输出的是Mary 1000 1st,John 300 2nd和John 200 3rd(举个例子)

另外,也许有点无关,但我也注意到,在旋转时,它会将结果以科学计数法抛出(尽管df显示没有数字的数字),如果我禁用SciNot,它将把值转换为浮点数,任何想法为什么会这样?

1 个答案:

答案 0 :(得分:0)

尝试:

df_out = df.pivot('name','date')['orders']
df_out = df_out.assign(sortkey = df_out.sum(axis=1))\
               .sort_values('sortkey', ascending=False)\
               .drop('sortkey', axis=1)

输出:

date  2017  2018  2019
name                  
Mary    50    50  1000
John   100   200   300