我不明白何时以及为什么会出现此错误。
根据我的理解,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]
我正在使用pandas
1.3.5
从这个问题中,我了解到在将时间戳排序到正确的bin之前,时间戳可能会相对于rule
参数中给定的单位被截断。
这意味着
2021-04-22 01:00:00
四舍五入为2021-04-22 00:00:00
2021-04-22 00:00:00
不适合于导致ValueError
的仓(2021-04-22 00:00:00, 2021-04-29 00:00:00]
在我看来,这看起来像是一个bug或功能错误。至少一个";在装箱之前截断时间戳";或";不要根据需要添加垃圾箱,而是引发错误";似乎是错的。
我找到time = time.dt.normalize()
来帮助