我有以下声明:
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 ....
又名一列。如何在一列上获得两个摘要统计信息?
感谢
答案 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