pandas.rolling_std() first value is nan · Issue #1884 · pandas-dev/pandas (original) (raw)

The window is 3, but we want a std at min_periods=1. The one-period standard deviation is trivially 0.

In [28]: pandas.rolling_std(np.array([1,2,3,4,5], dtype='double'), 3, min_periods=1)
Out[28]: array([        nan,  0.70710678,  1.        ,  1.        ,  1.        ])

The pathological case:

In [29]: pandas.rolling_std(np.array([1,2,3,4,5], dtype='double'), 1, min_periods=1)
Out[29]: array([ nan,  nan,  nan,  nan,  nan])

Maybe it's because pandas is taking the unbiased std for N-1 where N = 1, so it's dividing by zero?