Pandas DataFrame.resample()并将DateTimeIndex时间戳锚定到原点

6ju8rftf  于 2023-02-28  发布在  其他
关注(0)|答案(1)|浏览(102)

如果对DateTimeIndex执行Pandas DataFrame.resample(),如何设置时间频率的偏移量,如“30天”,这与“营业月开始/营业月结束”或“一刻钟开始”不同。
例如,如何确保所有的时间频率都是从UNIX纪元开始计算的,而不是从数据中的第一个时间戳之类的任意日期开始计算的?否则pd.Timestamp.floor()可能会在以后给予与索引中的值不匹配的值。

zwghvu4y

zwghvu4y1#

可以使用resample(origin=...)参数锚定DateTimeIndex
例如,如果要创建每30天期间的最小值的连续重采样,并确保向前填充所有值:

# 30D (30 days) is different from M (business month) freqstr
resampled_df = grouped_df.resample("30D, origin="epoch").agg({"value":"min"}).ffill()

这样,无论使用什么时间戳查询索引,您总是知道DataFrame中存在值,并且索引不会因为偏移问题而失败:

import pandas as pd
timestamp = pd.Timestamp("2020-09-02")
timestamp.floor("30D")

这会给你

Timestamp('2020-08-06 00:00:00')

...它是DateTimeIndex中的值,并且始终与UNIX纪元原点对齐。

相关问题