具有 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 的数据框列的移动平均值的主要内容,如果未能解决你的问题,请参考以下文章

如何在r中减去两个数据框列的平均值“平均值(df1 $ a-df2 $ b)”

用相关列的平均值替换数据框中的 NaN 值的函数

从由数组组成的数据框中取列的平均值

根据月份日期列查找数据框列中每个因素的平均值[重复]

按列/年的移动平均值-python,大熊猫

用组平均值替换 NaN 值