将qcut应用于滚动分析

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (25)

我想将pandas qcut应用到滚动窗口。我不知道如何去做这个...想法是花费最近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天的滚动窗口。这只是为了让事情更简单

提问于
用户回答回答于

我认为你可以在你的selectioning做到这一点applyx对应于最高四分位数。使用rolling6和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),每个滚动都有不同的值,因此不确定如何做不同的操作。

所属标签

可能回答问题的人

  • 天使的炫翼

    15 粉丝531 提问35 回答
  • 旺仔小小鹿

    社区 · 运营 (已认证)

    48 粉丝0 提问27 回答
  • 富有想象力的人

    2 粉丝0 提问26 回答
  • 发条丶魔灵1

    6 粉丝525 提问25 回答

扫码关注云+社区

领取腾讯云代金券