考虑一个看起来像下面这样的pandas
我想使用函数
DataFrame
: A B C
0 0.63 1.12 1.73
1 2.20 -2.16 -0.13
2 0.97 -0.68 1.09
3 -0.78 -1.22 0.96
4 -0.06 -0.02 2.18
我想使用函数
.rolling()
来执行以下计算,对于t = 0,1,2
:
- 选择从
t
到t+2
的行 - 从所有列中获取这3行中包含的9个值。将此集合称为
S
- 计算
S
的第75个百分位数(或其他关于S
的摘要统计信息)
例如,对于t = 1
,我们有
S = { 2.2 , -2.16, -0.13, 0.97, -0.68, 1.09, -0.78, -1.22, 0.96 },第75个百分位数是0.97。
我找不到一种方法让.rolling()
工作,因为它显然逐列进行操作。现在我依靠for循环,但速度非常慢。
你有更有效的方法建议吗?
scipy.ndimage.generic_filter
来正确地完成这个任务,尽管需要一些试错才能达到与 Pandas 的rolling
的center=False
效果相同的效果。 - Ahmed Fasih