首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在pandas DataFrame中忽略滚动平均值计算的NaN值?

如何在pandas DataFrame中忽略滚动平均值计算的NaN值?
EN

Stack Overflow用户
提问于 2021-11-30 14:33:56
回答 2查看 110关注 0票数 0

我尝试创建一个包含基于长度为5的窗口的滚动平均值的DataFrame。但我的数据包含一个NaN值,因此我只能获得具有NaN值的第3列的NaN值。在使用.rolling(5).mean()时,如何可以忽略NaN

我有这个示例数据df1

代码语言:javascript
运行
复制
    Column1 Column2 Column3 Column4
0   1       5       -9.0    13
1   1       6       -10.0   15
2   3       7       -5.0    11
3   4       8       NaN     9
4   6       5       -2.0    8
5   2       8       0.0     10
6   3       8       -3.0    12

为方便起见:

代码语言:javascript
运行
复制
#create DataFrame with NaN
df1 = pd.DataFrame({
                    'Column1':[1, 1, 3, 4, 6, 2, 3], 
                    'Column2':[5, 6, 7, 8, 5, 8, 8], 
                    'Column3':[-9, -10, -5, 'NaN', -2, 0, -3], 
                    'Column4':[13, 15, 11, 9, 8, 10, 12]
                    })
df1 = df1.replace('NaN',np.nan)
df1

当我使用创建一个基于窗口5的滚动平均值时,对于第3列,我只得到了NaN值。

代码语言:javascript
运行
复制
df2 = df1.rolling(5).mean()


    Column1 Column2 Column3 Column4
0   NaN     NaN     NaN     NaN
1   NaN     NaN     NaN     NaN
2   NaN     NaN     NaN     NaN
3   NaN     NaN     NaN     NaN
4   3.0     6.2     NaN     11.2
5   3.2     6.8     NaN     10.6
6   3.6     7.2     NaN     10.0
EN

回答 2

Stack Overflow用户

发布于 2021-11-30 14:39:13

Pandas mean有一个skipna标志,告诉它忽略NaN,请参阅

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.mean.html

试一试

代码语言:javascript
运行
复制
df2 = df1.rolling(5).mean(skipna=True)

代码语言:javascript
运行
复制
df2 = df1.rolling(5).apply(pd.np.nanmean)
票数 1
EN

Stack Overflow用户

发布于 2021-11-30 14:48:49

应该使用0或NaN对均值进行插值。

下面的工作。

代码语言:javascript
运行
复制
df1 = df1.fillna(df1.mean())

df2 = df1.rolling(5).mean()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70171072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档