热线电话:13121318867

登录
2019-02-25 阅读量: 726
计算列中的模式值,而忽略此列中的值“-1”

我想计算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()

0.0000
3
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子