如何使用“滚动(窗口)”查找每批中最频繁的值?

时间:2019-02-10 20:17:51

标签: python pandas numpy

我想将滚动窗口功能应用于y_train DataFrame:

y_train是一列:

0
0
1
..
2
0
3
0

y_train中的唯一值:

np.unique(y_train.values)

> array([0, 1, 2, 3])

应用此代码时,我在y_train中得到浮点值:

window = 20
y_train = y_train.rolling(window).median().dropna()

y_train中的新唯一值:

np.unique(y_train.values)

> array([0. , 0.5, 1. , 1.5, 2. , 2.5, 3. ])

我如何应用滚动窗口功能以获得每个window批次而不是中位数的最大FREQUENT值?

1 个答案:

答案 0 :(得分:1)

我们可以将scipy.stats.modeapply()一起使用-

In [57]: a
Out[57]: 
0    2
1    3
2    2
3    2
4    7
5    3
6    2
7    4
8    6
9    3
dtype: int64

In [58]: from scipy import stats

In [59]: modeval = lambda x : mode(x)[0]

In [60]: a.rolling(window=5).apply(modeval).dropna()
Out[60]: 
4    2.0
5    2.0
6    2.0
7    2.0
8    2.0
9    3.0
dtype: float64