包含除一个元素以外的所有Nan值的列/行的python数据帧标准偏差
我有一个像这样的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
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的除法。