Polars分组上采样(Upsampling)行为不符合预期的问题咨询
Polars分组上采样(Upsampling)行为不符合预期的问题咨询
我在使用Polars处理时间序列数据时,遇到了一个分组上采样的结果和预期不符的问题,想请教这是Polars的bug,还是我的代码用法有误?
首先是我的原始数据代码:
import polars as pl from datetime import datetime df = pl.DataFrame( { "time": [ datetime(2021, 2, 1), datetime(2021, 4, 2), datetime(2021, 5, 4), datetime(2021, 6, 6), datetime(2021, 6, 8), datetime(2021, 7, 10), datetime(2021, 8, 18), datetime(2021, 9, 20), ], "groups": ["A", "B", "A", "B","A","B","A","B"], "values": [0, 1, 2, 3,4,5,6,7], } )
接下来是我写的上采样和测试逻辑代码:
( df .upsample( time_column="time", every="1d", group_by="groups", maintain_order=True ) .group_by('groups') .agg(pl.col('time').diff().max()) )
运行这段代码后,得到的输出结果是:
shape: (3, 2) ┌────────┬──────────────┐ │ groups ┆ time │ │ --- ┆ --- │ │ str ┆ duration[μs] │ ╞════════╪══════════════╡ │ A ┆ 92d │ │ null ┆ 2d │ │ B ┆ 72d │ └────────┴──────────────┘
我原本预期上采样后,每组内相邻时间的间隔应该都是1天,所以diff().max()的结果应该是1天,但实际得到的却是大得多的时长,比如A组是92天,甚至还出现了一个null分组。这完全不符合我的预期,想知道问题出在哪里?
备注:内容来源于stack exchange,提问作者JohnRos
相关产品推荐
相关产品推荐

