重新采样会引发ValueError:值位于第一个bin之前



我不明白何时以及为什么会出现此错误。

根据我的理解,resample应该根据需要创建尽可能多的bin,以便对索引的所有时间戳进行bin。因此,消息";值落在第一个bin"之前;对我来说没有多大意义。

示例/实际输出:

>>> df = pd.DataFrame(index=pd.date_range(start='2021-04-22 01:00:00', end='2021-04-28 01:00', freq='1d'), data = [1]*7)
>>> df 
0
2021-04-22 01:00:00  1
2021-04-23 01:00:00  1
2021-04-24 01:00:00  1
2021-04-25 01:00:00  1
2021-04-26 01:00:00  1
2021-04-27 01:00:00  1
2021-04-28 01:00:00  1
>>> df.resample(rule='7d', origin='2021-04-29 00:00:00', closed='right', label='right').sum()
[...]
ValueError: Values falls before first bin

预期输出:

>>> df.resample(rule='7d', origin='2021-04-29 00:00:00', closed='right', label='right').sum() 
0
2021-04-29  7 # bin (2021-04-22 00:00:00, 2021-04-29 00:00:00]

我正在使用pandas1.3.5

从这个问题中,我了解到在将时间戳排序到正确的bin之前,时间戳可能会相对于rule参数中给定的单位被截断。

这意味着

  1. 2021-04-22 01:00:00四舍五入为2021-04-22 00:00:00
  2. 2021-04-22 00:00:00不适合于导致ValueError的仓(2021-04-22 00:00:00, 2021-04-29 00:00:00]

在我看来,这看起来像是一个bug或功能错误。至少一个";在装箱之前截断时间戳";或";不要根据需要添加垃圾箱,而是引发错误";似乎是错的。

我找到time = time.dt.normalize()来帮助

相关内容

  • 没有找到相关文章

最新更新