我有像这样的python数据框
In [212]: d3
Out[212]:
a b c d e
a 0.0 0.0 0.0 0.0 0.0
b 1.0 1.0 1.0 1.0 1.0
c 2.0 2.0 2.0 2.0 2.0
d 3.0 3.0 3.0 3.0 3.0
e 3.0 4.0 4.0 4.0 4.0
f 5.0 5.0 5.0 5.0 0.0
p NaN 3.0 NaN 3.0 NaN
q NaN 4.0 4.0 4.0 NaN
r NaN 5.0 NaN NaN NaN
当我使用d3.std(axis=1)
找到标准偏差时,我得到行'r'的SD是 NaN ,而我期望 0 。< / p>
In [213]: d3.std(axis=1)
Out[213]:
a 0.000000
b 0.000000
c 0.000000
d 0.000000
e 0.447214
f 2.236068
p 0.000000
q 0.000000
r NaN
dtype: float64
当我尝试使用numpy的nanstd()
函数时,这给了我想要的结果。
In [225]: np.nanstd(d3.loc['r',:])
Out[225]: 0.0
但是我有一个数据帧,我想使用像d3['new_col']=np.where(d3.std(axis=1)==0, d3.min(axis=1), np.nan)
这样的数据帧的std函数
这导致了
In [226]: d3['new_col'] = np.where(d3.std(axis=1)==0, d3.min(axis=1), np.nan)
In [227]: d3
Out[227]:
a b c d e new_col
a 0.0 0.0 0.0 0.0 0.0 0.0
b 1.0 1.0 1.0 1.0 1.0 1.0
c 2.0 2.0 2.0 2.0 2.0 2.0
d 3.0 3.0 3.0 3.0 3.0 3.0
e 3.0 4.0 4.0 4.0 4.0 NaN
f 5.0 5.0 5.0 5.0 0.0 NaN
p NaN 3.0 NaN 3.0 NaN 3.0
q NaN 4.0 4.0 4.0 NaN 4.0
r NaN 5.0 NaN NaN NaN NaN
我希望最右边的最重要的值是 5.0 而不是 NaN 。