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

问题描述 投票:2回答:1

我有以下数据框:

y
-1
-1
2
3
2
1
0

我需要应用3的滚动窗口并计算中位数,同时忽略负值(例如-1)。我该怎么办?

这是我尝试过的:

window = 3
y.rolling(window)[y>=0].apply(lambda x: np.median(x)).dropna()
python pandas
1个回答
0
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.