【发布时间】:2019-01-07 23:53:58
【问题描述】:
考虑一个熊猫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 循环,但它真的很慢。
您对更有效的方法有什么建议吗?
【问题讨论】:
-
this 怎么样
-
你有足够的代表知道不要将数据发布为图片
-
@RushabhMehta:这正是我想要使用的函数,但我不明白如何将 A、B 和 C 3 列中的数据拉到一起来计算百分位数。
-
只需将其粘贴为文本并将其格式化为代码即可。阅读:stackoverflow.com/questions/20109391/…
-
我不喜欢涉及重塑事物的答案。我使用
scipy.ndimage.generic_filter来正确执行此操作,尽管它需要一些试验和错误才能获得与 Pandas 的rolling的center=False效果相同的效果。
标签: python pandas dataframe rolling-computation