2 回答
TA贡献1826条经验 获得超6个赞
它ddof=1导致第一行std返回NaN。
ddof : int, optional
Means Delta Degrees of Freedom. The divisor used in calculations is N - ddof,
where N represents the number of non-NaN elements. By default ddof is zero.
因此,N第一行是1(即只有 1 个非 NaN 值)。N - ddof = 1 - 1 = 0。除数为0,因此std返回NaN
你需要ddof=0有第一行
df['std'] = np.nanstd(df.iloc[:, 1:], axis=1, ddof=0)
Out[416]:
ID Month1 Month2 Month3 std
0 ABC 1.0 NaN NaN 0.0
1 FFF 2.0 2.0 2.0 0.0
2 XYZ NaN 3.0 3.0 0.0
TA贡献1850条经验 获得超11个赞
问题是您将 delta 自由度 ( ddof
) 设置为 1。正如文档中所述np.nanstd
:
计算中使用的除数为 N - ddof,其中 N 表示非 NaN 元素的数量。默认情况下 ddof 为零。
因此,通过将其设置为 1,当只有 1 个非 NaN 的值时,除数将变为 0,并且得到 NaN。
如果更改为 set ddof=0
,则第一行的标准差值为 0
添加回答
举报