【发布时间】:2018-12-06 19:34:31
【问题描述】:
抱歉,我是一个想要从 R 过渡的菜鸟!
可重现的数据示例;
df = pd.DataFrame(1.26 + np.random.rand(size)/100.0,
index=pd.date_range('20160101 09:00:00',
periods=size,
freq='60s'),
columns=['ATR20'])
我想在 ATR20 列中取一个值,并根据 ATR20 列的前 n 个值的滚动窗口计算其当前百分位数。
据我所知:
for n in range(1,len(df)):
print(sum(df.ATR20[n:n+20] > df.ATR20))
这给出了以下错误:
ValueError: Can only compare identically-labeled Series objects
我确信有一种更简单的方法可以使用更简洁的语法来做到这一点,但我的搜索没有找到足够接近的东西。
谢谢。
【问题讨论】:
-
首先,看看你想要总结什么:如果你让
df.ATR20[n:n+20]到df.ATR20工作正常,这将是一系列 20 个布尔值,告诉你 @ 中的每个值987654326@是否大于ATR20中的对应值。因此,将这些布尔值相加只会计算更大的数字(因为True和False以及添加为数字时的 1 和 0)。这就是你想要的第一步吗?如果是这样,可以修复它……但如果不是,请解释您在第一步中实际尝试做的事情。
标签: python pandas numpy percentile