【发布时间】:2021-11-16 22:18:39
【问题描述】:
我目前正在尝试在我的数据帧 (tdf) 中获取组的均值(),但我的数据集中混合了一些 NaN 值和填充值。示例如下所示
| Test # | a | b |
|---|---|---|
| 1 | 1 | 1 |
| 1 | 2 | NaN |
| 1 | 3 | 2 |
| 2 | 4 | 3 |
我的代码需要获取这个数据集,并创建一个包含集合的均值、标准差和 95% 区间的新数据集。
i = 0
num_timeframes = 2 #writing this in for example sake
new_df = pd.DataFrame(columns = tdf.columns)
while i < num_timeframes:
results = tdf.loc[tdf["Test #"] == i].groupby(["Test #"]).mean()
new_df = pd.concat([new_df,results])
results = tdf.loc[tdf["Test #"] == i].groupby(["Test #"]).std()
new_df = pd.concat([new_df,results])
results = 2*tdf.loc[tdf["Test #"] == i].groupby(["Test #"]).std()
new_df = pd.concat([new_df,results])
new_df['Test #'] = new_df['Test #'].fillna(i) #fill out test number values
i+=1
为简单起见,我将在 while 循环的第一遍显示所需的输出,仅计算平均值。然而,这个问题会影响每一行。 Test # 1 均值的预期输出如下所示:
| Test # | a | b |
|---|---|---|
| 1 | 2 | 1.5 |
但是,包含任何 NaN 行的列将整个平均值计算为 NaN,从而产生如下所示的输出
| Test # | a | b |
|---|---|---|
| 1 | 2 | NaN |
我尝试传递skipna=True,但得到一个错误,指出mean 没有skipna 参数。我真的很茫然,因为我的理解是 df.mean() 默认忽略 NaN 行。我对 python 的经验有限,因此非常感谢任何帮助。
【问题讨论】:
标签: python pandas std nan mean