【问题标题】:Sort pivot table by groups按组对数据透视表进行排序
【发布时间】:2019-12-11 20:59:49
【问题描述】:

我在为 pandas 使用数据透视表而苦恼。

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

我正在尝试以能够查看前 10 名最大客户的方式旋转数据框。

例如,假设我有

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

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

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

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

【问题讨论】:

  • 该链接根本没有介绍如何对枢轴进行排序

标签: python pandas dataframe pivot-table


【解决方案1】:

试试:

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

【讨论】:

    猜你喜欢
    • 2019-01-08
    • 1970-01-01
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-27
    • 2023-03-29
    • 2021-08-27
    相关资源
    最近更新 更多