python dataframe std包含除一个元素之外的所有Nan值的列/行的偏差

时间:2016-09-28 11:36:23

标签: 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  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

0 个答案:

没有答案