groupby_dynamic 自行设计索引
groupby_dynamic with selfdesigned index
如何制作类似groupby_dynamic
但可以支持用户定义的索引
groupby_dynamic可以支持timeindex做一个resample的操作
但是只能支持范围不重复的方式,比如
time
day1 9:00
day1 15:00
day2 9:00
day2 15:00
day3 9:00
day3 15:00
动态 groupby 到 1D
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
example pic
解决方法是在每个 || 之间给一个不同的值期间。
every
决定索引的输出。
periods
给出了你需要的 window。
例子
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())
如何制作类似groupby_dynamic
但可以支持用户定义的索引
groupby_dynamic可以支持timeindex做一个resample的操作
但是只能支持范围不重复的方式,比如
time
day1 9:00
day1 15:00
day2 9:00
day2 15:00
day3 9:00
day3 15:00
动态 groupby 到 1D
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
example pic
解决方法是在每个 || 之间给一个不同的值期间。
every
决定索引的输出。periods
给出了你需要的 window。
例子
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())