我有以下声明:
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.
也就是只有一列。如何在一列上获得两个汇总统计信息?
谢谢
发布于 2015-10-06 06:14:15
一个字典只能有一个与键相关联的值,因此语法将不起作用。为了获得类似的输出,脑海中还会出现另外两个选项:您可以使用括号选择列,然后传递要应用的缩减操作的列表:
>>> 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 31https://stackoverflow.com/questions/32958526
复制相似问题