具有 nans 的数据框列的移动平均值
Posted
技术标签:
【中文标题】具有 nans 的数据框列的移动平均值【英文标题】:Moving average of a dataframe column with nans 【发布时间】:2021-04-28 05:07:19 【问题描述】:我正在尝试计算数据框列的移动平均值。该列有一些 nans。我尝试了此处提供的现有解决方案。但是,结果只是 nans。
我的代码:
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()
目前的输出:
x = array([nan, nan, nan, nan, nan, nan, nan])
【问题讨论】:
【参考方案1】:你的意思是?
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
或者你想要
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
【讨论】:
这是窗口的滚动平均值吗?一个窗口意味着我们需要定义大小对吗?这里怎么样? 确实有帮助。fillna
也正是我所需要的。非常感谢。
干杯@大陆,随时接受答案。如果需要,很乐意提供进一步帮助以上是关于具有 nans 的数据框列的移动平均值的主要内容,如果未能解决你的问题,请参考以下文章