如果对DateTimeIndex执行Pandas DataFrame.resample(),如何设置时间频率的偏移量,如“30天”,这与“营业月开始/营业月结束”或“一刻钟开始”不同。例如,如何确保所有的时间频率都是从UNIX纪元开始计算的,而不是从数据中的第一个时间戳之类的任意日期开始计算的?否则pd.Timestamp.floor()可能会在以后给予与索引中的值不匹配的值。
DataFrame.resample()
pd.Timestamp.floor()
zwghvu4y1#
可以使用resample(origin=...)参数锚定DateTimeIndex:例如,如果要创建每30天期间的最小值的连续重采样,并确保向前填充所有值:
resample(origin=...)
DateTimeIndex
# 30D (30 days) is different from M (business month) freqstr resampled_df = grouped_df.resample("30D, origin="epoch").agg({"value":"min"}).ffill()
这样,无论使用什么时间戳查询索引,您总是知道DataFrame中存在值,并且索引不会因为偏移问题而失败:
DataFrame
import pandas as pd timestamp = pd.Timestamp("2020-09-02") timestamp.floor("30D")
这会给你
Timestamp('2020-08-06 00:00:00')
...它是DateTimeIndex中的值,并且始终与UNIX纪元原点对齐。
1条答案
按热度按时间zwghvu4y1#
可以使用
resample(origin=...)
参数锚定DateTimeIndex
:例如,如果要创建每30天期间的最小值的连续重采样,并确保向前填充所有值:
这样,无论使用什么时间戳查询索引,您总是知道
DataFrame
中存在值,并且索引不会因为偏移问题而失败:这会给你
...它是
DateTimeIndex
中的值,并且始终与UNIX纪元原点对齐。