首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Pandas group按滚动分位数分组

Pandas group按滚动分位数分组
EN

Stack Overflow用户
提问于 2019-03-15 06:41:04
回答 1查看 377关注 0票数 1

我想要做的是获取一个数据集,该数据集包含几年中每分钟的x值,并创建一个“典型周”的数据,因此一个(60*24*7) = 10080行的数据帧。其中每一行具有一些特定的分位数/百分位数值,例如0.1、0.25、0.5、0.75、0.9。分位数是根据所有历史数据集中一周中该分钟的x值以及该minuteA之前和之后的五分钟计算得出的。

因此,输出将是一周中每一分钟的x值,以及这些数据的值,包括百分位数计算中的前几分钟和后几分钟。

输入数据:

代码语言:javascript
复制
                                x    dow    hour  minute
               time                                     
2016-10-18 07:55:00     29.500000      0       7      55
2016-10-18 07:56:00     35.000000      0       7      56
2016-10-18 07:57:00     24.666667      0       7      57
2016-10-18 07:58:00     31.833333      0       7      58
2016-10-18 07:59:00     35.500000      0       7      59
2016-10-18 08:00:00     35.500000      0       8      00 
2016-10-18 08:01:00     33.500000      0       8      01
...                     ...          ...     ...     ...
2018-10-18 10:01:00     32.500000      6      10      01
2018-10-18 10:02:00     34.500000      6      10      02
2018-10-18 10:03:00     39.500000      6      10      03

输出数据:

代码语言:javascript
复制
dow    hour    minute    percentile1    percentile2    percentile3    percentile4    percentile5
3         4        58             25             28             33             44             50
...
...

我怎么才能在熊猫身上做到这一点呢?这似乎是朝着正确的方向迈出的一步,但我不确定滚动是否像预期的那样包括前后的分钟数:

df.groupby([df.dow, df.hour, df.minute]).rolling(5).apply(pd.quantile, [0.25, 0.30, 0.50])

EN

回答 1

Stack Overflow用户

发布于 2019-03-15 07:00:57

您可以使用

代码语言:javascript
复制
g=df.groupby(['dow', 'hour', 'minute'])['x']

s=pd.concat({y:g.apply(lambda x : x.rolling(5,min_periods=1).quantile(y)) for y in [0.25,0.30,0.50]},1)
s
Out[298]: 
        0.25       0.30       0.50
0  29.500000  29.500000  29.500000
1  35.000000  35.000000  35.000000
2  24.666667  24.666667  24.666667
3  31.833333  31.833333  31.833333
4  35.500000  35.500000  35.500000
5  33.500000  33.500000  33.500000

yourdf=pd.concat([df,s],axis=1)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55173084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档