我有以下数据框:
y
-1
-1
2
3
2
1
0
我需要应用3的滚动窗口并计算中位数,同时忽略负值(例如-1
)。我该怎么办?
这是我尝试的:
window = 3
y.rolling(window)[y>=0].apply(lambda x: np.median(x)).dropna()
在lambda函数中过滤或在之前过滤,但是输出不同
window = 3
df['new1'] = df.y.rolling(window).apply(lambda x: np.median([x>=0]), raw=False)
df['new2'] = df.loc[df.y>=0, 'y'].rolling(3).median()
print (df)
y new1 new2
0 -1 NaN NaN
1 -1 NaN NaN
2 2 0.0 NaN
3 3 1.0 NaN
4 -2 1.0 NaN
5 -1 0.0 NaN
6 0 0.0 2.0
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句