Mainland
Mainland

Reputation: 4564

Moving average of a dataframe column with nans

I am trying to calculate moving average of a dataframe column. The column has some nans. I tried an already available solution provided here. However, the result is nans only.

My code:

df = 
      A
0     10   
1     NaN
2     20
3     30
4     40
5     50
6     60
7     NaN

def running_mean(x, N):
    cumsum = np.cumsum(np.insert(x, 0, 0)) 
    return (cumsum[N:] - cumsum[:-N]) / float(N)

x = running_mean(df['A'].values, 2)
plt.plot(x)
plt.show()

Present output:

x = array([nan, nan, nan, nan, nan, nan, nan])

Upvotes: 1

Views: 220

Answers (1)

wwnde
wwnde

Reputation: 26676

Do you mean?

df['mean']=df.A.expanding().mean()



    A   mean
0  10.0  10.0
1   NaN  10.0
2  20.0  15.0
3  30.0  20.0
4  40.0  25.0
5  50.0  30.0
6  60.0  35.0
7   NaN  35.0

Or did you want

df['meanRolling']=df.A.fillna(0).rolling(2).mean()





    A  meanRolling
0  10.0          NaN
1   NaN          5.0
2  20.0         10.0
3  30.0         25.0
4  40.0         35.0
5  50.0         45.0
6  60.0         55.0
7   NaN         30.0

Upvotes: 2

Related Questions