包含除一个元素以外的所有Nan值的列/行的python数据帧标准偏差

包含除一个元素以外的所有Nan值的列/行的python数据帧标准偏差,python,pandas,dataframe,standard-deviation,Python,Pandas,Dataframe,Standard Deviation,我有一个像这样的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

我有一个像这样的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(轴=1)找到标准偏差时,我得到了行'r'的SD为NaN,我也期望同样的0

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
但是我有一个dataframe,我想使用dataframe的std函数,像这样
d3['new\u col']=np.where(d3.std(axis=1)==0,d3.min(axis=1),np.nan)

这导致了

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

请参见->“默认情况下由N-1标准化”。如果您有1个元素,那么您正在进行0的除法运算。请参见->“默认情况下由N-1标准化”。如果你有1个元素,你在做0的除法。