我有以下声明:

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

这给了我:
平均重量百分比端口
部门
现金0.16
非必需消费品9.36
消费主食6.60
能量7.41
财务14.02
医疗保健12.43
工业20.45
....
也就是说只有一列。如何在一个列上获取两个摘要统计信息?
谢谢

最佳答案

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

>>> 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

关于python - Pandas 在同一列上汇总多个摘要,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32958526/

10-13 07:23