【发布时间】:2018-09-07 17:22:35
【问题描述】:
例如,我有以下代码创建一个数据框,其索引包含单个值 - 日期“2018-03-06”(星期二)。请注意,此日期在 2018-03-05(星期一)这一周:
values = [1, 1, 1]
dates = pd.to_datetime(np.repeat('2018-03-06', 3))
df = pd.DataFrame({
'value': values
}, index=dates)
df.resample('W-MON').size()
产生:
2018-03-12 3
Freq: W-MON, dtype: int64
为什么 pandas 会将日期提前一周?我原以为结果会被重新采样到 2018-03-05,因为那是生成值的那一周,我使用的是 freq='W-MON'。
更新
正如所指出的,我需要将 label 参数添加到 resample,它定义了要使用的 bin 边缘。使用label='left' 解决了将日期存储在正确周内的问题,除非日期在一周的开始(在本例中为星期一)。例如,如果我使用 label='left' 对日期 2018-03-05 应用重新采样,则重新采样的值为 2018-02-26,而它应该是 2018-03-05。
【问题讨论】: