Pandas在同一列上聚合多个摘要

时间:2015-10-05 21:52:50

标签: python pandas

我有以下声明:

print p.df.groupby(by="Sector").agg({"Average % Weight Port":"sum","Average % Weight Port":"mean"})

这给了我:

平均%重量端口

扇区
现金0.16

非必需消费品9.36

Consumer Staples 6.60

能量7.41

财务报告14.02

医疗保健12.43

工业20.45 ....

又名一列。如何在一列上获得两个摘要统计信息?

感谢

1 个答案:

答案 0 :(得分:2)

字典只能有一个与键相关联的值,因此语法不起作用。获取类似输出时会想到另外两个选项:您可以使用括号选择列,然后传递要应用的缩减操作列表:

>>> df = pd.DataFrame({"sector": ["a","a","b","b"], "AWP": [10,20,30,32]})
>>> df.groupby("sector")["AWP"].agg(["sum", "mean"])
        sum  mean
sector           
a        30    15
b        62    31

或者您仍然可以使用字典,但使用操作列表作为值:

>>> df.groupby("sector").agg({"AWP": ["sum", "mean"]})
       AWP     
       sum mean
sector         
a       30   15
b       62   31

请注意,在最后一个版本中,您保留有关聚合列名称的信息。

如果您想要不同名称的列,可以添加.rename(columns={"sum": "s2"}),或使用字典作为值:

>>> df.groupby("sector").agg({"AWP": {"newsum": "sum", "newmean": "mean"}})
          AWP        
       newsum newmean
sector               
a          30      15
b          62      31