我有以下声明:
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/