Python 在同一列上添加多个摘要
我有以下声明:Python 在同一列上添加多个摘要,python,pandas,Python,Pandas,我有以下声明: 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 也就是只有一列。如何在一列中获得两个摘要统计信息 谢谢一个字典只能有一个与键关联的值,这样语法就不起作用了。要获得类
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
>>> df.groupby("sector").agg({"AWP": {"newsum": "sum", "newmean": "mean"}})
AWP
newsum newmean
sector
a 30 15
b 62 31
请注意,在最后一个版本中,您保留了有关聚合列名称的信息
如果需要不同名称的列,可以添加.rename(columns={“sum”:“s2”})
,或使用字典作为值:
>>> df.groupby("sector").agg({"AWP": ["sum", "mean"]})
AWP
sum mean
sector
a 30 15
b 62 31
>>> df.groupby("sector").agg({"AWP": {"newsum": "sum", "newmean": "mean"}})
AWP
newsum newmean
sector
a 30 15
b 62 31
使用
.groupby(“x”).agg({“ABC”:“sum”})