我想将pandas qcut应用于滚动窗口。我不确定如何去做this...idea,就是花上20天,找到落在上四分位数中的值,找出上四分位数中值的平均值。并返回该滚动时间序列的平均值。
所以如果我有
s = pd.Series([5,6,10,12,13,13,20,21,22])
s.rolling(2,2).apply(lambda x: pd.qcut(x,5))
这会导致
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
5 NaN
6 NaN
7 NaN
8 NaN
dtype: float64
如何获得每个时间序列的qcut间隔?谢谢。请注意,在示例中,我有一个2天滚动窗口。这只是为了让事情变得更简单
发布于 2019-02-22 02:56:13
我认为你可以通过在你的apply
中选择对应于最高四分位数的x
来做到这一点。使用rolling
6和q=4
,您可以执行以下操作:
print (s.rolling(6,6).apply(lambda x: x[pd.qcut(x, q=4, labels=[1,2,3,4]) == 4].mean()))
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
5 13.0
6 20.0
7 20.5
8 21.5
dtype: float64
我使用labels
参数来选择更高的四分位数(这里的名称是4),它对每个滚动都有不同的值,所以不确定如何做不同的事情。
https://stackoverflow.com/questions/54813615
复制相似问题