【问题标题】:Multiple aggregate function over a pivot table数据透视表上的多个聚合函数
【发布时间】:2019-06-12 08:32:26
【问题描述】:

如何在所有列的数据透视表上获取多个聚合函数,而不是通过数据透视表上的单个列。这是我的数据透视表

kpi_date     2019-01-01  2019-01-02     ...      2019-01-16  2019-01-17
ssaname                                 ...                            
Bangalore         43029       40038     ...           37599       39125
Belgaum            6975        6554     ...            7172        7274
Bellary            7163        6751     ...            7221        7103
Bidar              1603        1466     ...            1759        1693
Bijapur            4534        4283     ...            5022        4968
Chikmagalur        9177        8304     ...            5723        7442
Davangere          1949        1810     ...            2402        2368
Gulbarga           4265        4014     ...            4573        4504
Hassan             4898        4632     ...            4914        5027
Hubli              8974        8265     ...            9145        9169
Karwar            10059        9581     ...           10097       10345
Kodagu             7461        6838     ...            7422        7253
Kolar              2991        2698     ...            2793        2833
Mandya             1418        1317     ...            1386        1357
Mangalore         24765       23398     ...           24890       24993
Mysore             8774        7867     ...            7598        8107
Raichur            4271        4003     ...            4489        4391
Shimoga            8738        8097     ...            8791        8833
Tumkur             2612        2431     ...            2549        2560

我想要从 2019 年 1 月 1 日到 2019 年 1 月 17 日的列的总和、平均值、最大值

【问题讨论】:

标签: python pandas


【解决方案1】:

使用agg

df.agg(['mean','sum','max'])
         2019-01-01     2019-01-02     2019-01-16     2019-01-17
mean    8613.473684    8018.263158    8186.578947    8386.578947
sum   163656.000000  152347.000000  155545.000000  159345.000000
max    43029.000000   40038.000000   37599.000000   39125.000000

如果需要所有值使用stack

df.stack().agg(['max','mean','min'])
max     43029.000000
mean     8301.223684
min      1317.000000
dtype: float64

如果需要所有行

df.T.agg(['mean','sum','max'])

【讨论】:

  • 不适用于列,我想要一行的平均值、最大值、总和
  • df.agg(['mean','sum','max'], axis=1) 这也可以。
  • @AmitAmola 这不起作用,因为它说 TypeError: ("'list' object is not callable", 'occured at index Bangalore')
  • @srimannarayana 适合你吗?如果是这样,您愿意投票并接受吗? :-)
  • @ W-B 再次工作,但我只得到平均值/最大值/总和值,而不是实际列,我不得不再次进行合并。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多