【问题标题】:Moving average of a dataframe column with nans具有 nans 的数据框列的移动平均值
【发布时间】:2026-02-09 11:50:01
【问题描述】:

我正在尝试计算数据框列的移动平均值。该列有一些 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])

【问题讨论】:

    标签: python arrays pandas numpy mean


    【解决方案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 也正是我所需要的。非常感谢。
    • 干杯@大陆,随时接受答案。如果需要,很乐意提供进一步帮助
    最近更新 更多