【发布时间】:2017-10-31 16:13:28
【问题描述】:
我有以下数据框,这是一个示例:
Area Num Month Year Type Result
AA 1 Jan 2015 A 1
AA 1 Feb 2015 A 2
AA 1 Mar 2015 A 3
AA 1 Apr 2015 A 4
AA 1 May 2015 A 5
AA 1 Jun 2015 A 6
AA 1 Jul 2015 A 7
AA 1 Aug 2015 A 8
AA 1 Sep 2015 A 9
AA 1 Oct 2015 A 10
AA 1 Nov 2015 A 11
AA 1 Dec 2015 A 12
BB 2 Jan 2015 B 1
BB 2 Feb 2015 B 2
BB 2 Mar 2015 B 3
BB 2 Apr 2015 B 4
BB 2 May 2015 B 5
BB 2 Jun 2015 B 6
BB 2 Jul 2015 B 7
BB 2 Aug 2015 B 8
BB 2 Sep 2015 B 9
BB 2 Oct 2015 B 10
BB 2 Nov 2015 B 11
BB 2 Dec 2015 B 12
我需要按列分组:Area、Num、Type、Year 并计算每个组的第 90 个百分位数。每个Area 都有多个Num 和Type。
我的预期输出是:
我需要为每个组计算前 12 个月的 12 个月百分位值,并将输出粘贴到下个月。
例如: 计算具有 {Area:AA,Num:1,Year:2015,Type:A} 的组的第 90 个百分位值并将其分配给 {Area:AA,Num:1,Year:2016,Type:A,Month:Jan }。
Area Num Month Year Type Result
AA 1 Jan 2016 A 10.9
AA 1 Feb 2016 A 10.99
现在对于新组(二月){Area:AA,Num:1,Year:2016,Type:A,Month:Feb} 应该计算 2015 年 2 月到 2016 年 1 月 Result columnn 的第 90 个百分位数的值,依此类推开。
我正在寻找单独计算百分位数和分组依据的解决方案,但我不知道如何在这个移动窗口上计算百分位数。
【问题讨论】:
-
(对不起,这更像是一个评论,但我还没有足够的代表发表评论。)你知道pandas
rolling函数吗? (如果是这样,您可以发布您尝试过的任何代码吗?)我认为rolling会让您走上正轨。
标签: python pandas function group-by rolling-computation