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
添加回答
舉報