例如,我有以下代码创建一个数据框,该数据框的索引包含单个值 - 日期“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()
Run Code Online (Sandbox Code Playgroud)
它产生:
2018-03-12 3
Freq: W-MON, dtype: int64
Run Code Online (Sandbox Code Playgroud)
为什么大熊猫会将日期向前滚动一周?我原以为结果会被重新采样到 2018-03-05,因为那是生成值的那一周,我正在使用freq='W-MON'.
更新
正如所指出的,我需要添加一个label参数来resample定义要使用的 bin 边缘。使用label='left'解决了在正确的星期内对日期进行分桶的问题,除非日期落在一周的开始(在本例中为星期一)。例如,如果我将重采样应用于日期 2018-03-05,label='left'那么重采样值为 2018-02-26,而它应该是 2018-03-05。