gpt4 book ai didi

python - pandas rolling 和 ewm 完全忽略 na 并使用最后 N 个有效数据

转载 作者:太空狗 更新时间:2023-10-30 02:41:00 57 4
gpt4 key购买 nike

关于新的 .rolling.ewm 方法。我正在使用 Pandas 0.19.0。

>>> df = pd.DataFrame({'A' : [1,2,np.nan, 3, 4, 5], 'B' : [1,2,3,np.nan, 4, 5]})
>>> df
A B
0 1.0 1.0
1 2.0 2.0
2 NaN 3.0
3 3.0 NaN
4 4.0 4.0
5 5.0 5.0

>>> df.rolling(window = 3).mean()
A B
0 NaN NaN
1 NaN NaN
2 NaN 2.0
3 NaN NaN
4 NaN NaN
5 4.0 NaN

期望的输出是完全忽略 nan,使用最后 3 个有效数据,并将 nan 留在原处。

     A    B
0 NaN NaN
1 NaN NaN # first two we don't have enough data
2 NaN 2.0 # B column is valid
3 2.0 NaN # completely ignore the nan in df.ix[2,'A'], take the mean of last 3 valid data
4 3.0 3.0
5 4.0 4.0

对于 .ewm,我们有一个 ignore_na 参数。下面的代码得到了我想要的

output = df.ewm(com=2, ignore_na=True).mean()
output[df.isnull()] = np.nan

最佳答案

困难的部分是您需要最后 3 个有效数据点。

df.apply(lambda x: x.dropna().rolling(3).mean().reindex(x.index))

enter image description here

关于python - pandas rolling 和 ewm 完全忽略 na 并使用最后 N 个有效数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40994756/

57 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com