-1

如何制作类似 groupby_dynamic 但可以支持用户定义的索引

groupby_dynamic 可以支持 timeindex 将操作作为重采样

但只能支持范围不重复的方式,比如

time
day1   9:00
day1 15:00
day2  9:00
day2  15:00
day3  9:00
day3 15:00

动态分组到一维


day1  9:00
day1 15:00
--------------
day2  9:00
day2  15:00
-------------
day3  9:00
day3 15:00

我问的功能是动态分组的用户定义方式,并且索引可能重复

day1  9:00
day1 15:00

day2  9:00
day2  15:00
-------------
day2  9:00
day2  15:00
day3  9:00
day3 15:00
--------------

我可以在一系列中使用滚动,但是 rolling_apply 会浪费很多时间,因为它会滚动每个索引

day1  9:00
day1 15:00

day2  9:00
day2  15:00
-------------
day1 15:00
day2  9:00
day2  15:00
day3  9:00      
--------------  -------> this window is useless
day2  9:00
day2  15:00
day3  9:00
day3  15:00
-------------

day2  15:00
day3  9:00
day3  15:00
day4  9:00   
------------  -------> this window is useless

示例图片

4

1 回答 1

1

The solution is to give a different value between the every || period.

  • every decides the output of the index.

  • periods gives the window you need.

Examples

import datetime
df = pl.DataFrame(
    {
      "time": pl.date_range(
           low=datetime.datetime(2021, 12, 16),
            high=datetime.datetime(2021, 12, 22),
            interval="12h",
         ),
         "n": [1 for i in range(13)]
}
 )

df.groupby_dynamic('time', period='2d', every='1d',include_boundaries=True,truncate=False,closed='right').agg( pl.col('n').sum())
于 2022-01-07T20:37:13.180 回答