[英]Python Pandas Average and Sum conflicts
我有一个看起来像这样的表:
平均行数和总行数计算如下:
df1.loc["Average"] = df1.mean()
df1.loc["Total"] = df1.sum()
现在,我意识到这里的问题是平均值计算正确,但总和也包括平均值行,这不是我想要的。
理想情况下,我希望看到更类似于 single.loc 行的sum()
应用于
`columns` ['Enageable R', 'R Responses', 'R Response Rate', 'Engageable Q',
'Q Responses', 'Q Response Rate']
和mean()
应用于columns ['R Response Rate', 'Q Response Rate']
所以我很想看到这样的东西:
牌 | 可接合 R | R 响应 | 反应速度 |
---|---|---|---|
品牌1 | 34 | 34 | 100.00% |
品牌2 | 34 | 34 | 100.00% |
品牌3 | 34 | 34 | 100.00% |
全部的 | 102 | 102 | 100.00% |
使用DataFrame.agg
分别处理 function ,然后通过DataFrame.append
添加新行
df = df.append(df.agg(['sum','mean']).rename({'sum':'Total','mean':'Average'}))
如果只需要处理一些列:
cols = ['Enageable R', 'R Responses', 'R Response Rate', 'Engageable Q',
'Q Responses', 'Q Response Rate']
df = df.append(df[cols].agg(['sum','mean']).rename({'sum':'Total','mean':'Average'}))
使用副本:
df2 = df1.copy(deep=True)
df2["Average"] = df1.mean()
df2["Total"] = df1.sum()
编辑
你的帖子有点混乱。
df1["Total"] = df1.sum()
df1["Average"] = df1[['R Response Rate', 'Q Response Rate']].mean(axis=1)
这就是我发现的,感谢@Wilian 的推荐,尽管如果有更有效的方法可以做到这一点,请告诉我。
所以我有一个 df1,我使用以下方法创建了一个空白 df2:
df2 = pd.DataFrame(columns=['Enageable R', 'R Responses', 'R Response Rate', 'Engageable Q',
'Q Responses', 'Q Response Rate'])
然后我用 df2 填充:
df2.loc["Average"] = df1.mean()
df2.loc["Total"] = df1.sum()
然后我将 df2 附加到 df1
df1 = df1.append(df2)
其中创建了以下内容:
因此,总和和平均列在其他行的计算中不包括彼此。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.