python - 计算 Pandas 中所有行的行子集的平均值
问题描述
我试图通过过滤掉不传递标志的行来计算列的统计信息,但返回所有行的整体统计信息。这个概念本质上是使用“估计宇宙”来计算统计数据。我的实际示例要复杂得多,因此我简化为一个基本示例:
import pandas as pd
import numpy as np
idx = range(0,20)
data = pd.Series(np.random.random_sample(20),index = idx)
flag = pd.Series(np.array([1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0]),index = idx)
使用上面的数据,我想返回数据的平均值,但只计算 flag == 1 的行的平均值。我面临的挑战是返回所有行的平均值,即使是那些不用于计算的行它。
我可以做这样的事情:
data.groupby(flag).mean()
然后在所有行中重复 1 组的值,但这不起作用,因为我的示例使用额外的组层来计算统计信息。在我的真实示例中,我基本上是使用单独的分组计算每行的组均值和标准差,但我也希望仅使用传递标志的行来计算这些统计数据。
谢谢你的帮助!
编辑:
作为对第一条评论的回应,我希望输出如下所示:
import pandas as pd
import numpy as np
np.random.seed(100)
idx = range(0,20)
data = pd.Series(np.random.random_sample(20),index = idx)
flag = pd.Series(np.array([1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0]),index = idx)
我正在寻找第 1 组的平均值:
data.groupby(flag).mean()
0 0.466647
1 0.442576
dtype: float64
然后让它对每一行重复:
pd.Series(data.groupby(flag).mean()[1],index = idx)
0 0.442576
1 0.442576
2 0.442576
3 0.442576
4 0.442576
5 0.442576
6 0.442576
7 0.442576
8 0.442576
9 0.442576
10 0.442576
11 0.442576
12 0.442576
13 0.442576
14 0.442576
15 0.442576
16 0.442576
17 0.442576
18 0.442576
19 0.442576
dtype: float64er code here
我只是在寻找一种更好的方法来做到这一点,因为最终这将扩展到跨许多数据集的多个统计数据,并将涉及额外的分组层。
希望这很清楚。谢谢!
解决方案
推荐阅读
- javascript - 使用 NodeJS 进行抓取
- spring-boot - logback spring 根据 spring 配置文件关闭控制台日志记录
- javascript - Chrome Devtools 以什么方式异步记录对象?(特别是在 React Native 中)
- r - 替换为最右边行字符串右侧的 NA
- python - Pusher:Swift (iOS) 发布者/服务器到 Raspberry Python 订阅者/客户端
- c# - 复选框的功能或循环
- azure-ad-b2c - EnforceChangePasswordPolicy 和 ForceChangePasswordNextLogin 有什么区别?
- python - 在频谱图上绘制基于时间的线图
- javascript - 在 Google 地图中打开/关闭标记
- javascript - 尝试发送嵌入时我不断收到错误