我想计算y(滚动窗口为5)的中值-1,而不考虑y(当X等于B时发生的值)。
X y
A 1
A 10
A 10
B -1
A 1
B -1
B -1
A 4
B -1
例如,第一个滚动窗口:
X y
A 10
A 10
A 10
B -1
A 1
y的模式值为10。
这是我在没有上述限制的情况下计算中值的方法:
window = 5
y = y.rolling(window).apply(lambda x: np.median(x)).dropna()
如何添加不考虑的限制-1(与不考虑X等于B的行相同)?
我试过这个:
y = y.rolling(window).apply(lambda x: np.median(x[x>=0])).dropna()
但是看一下y.shape,似乎y包含的条目比我做的少y.rolling(window).apply(lambda x: np.median(x)).dropna()。
解决办法:滤掉所有-1的
window = 5
y = df[df['y'] != -1].rolling(window).apply(np.median).dropna()
或者你还想在窗口大小中计算-1?在哪种情况下
def mode_wo_minus1(x):
no_minus1 = x[x != -1]
return np.median(no_minus1)
window = 5
y = df.rolling(window).apply(mode_wo_minus1).dropna()








暂无数据