如何计算中位数而忽略负值?

通量

我有以下数据框:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章