例如,我有以下代码创建一个数据框,该数据框的索引包含单个值 - 日期“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。
让我们尝试使用label并closed 查看文档:
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', label='left',closed='left').size()
Run Code Online (Sandbox Code Playgroud)
输出:
2018-03-05 3
Freq: W-MON, dtype: int64
Run Code Online (Sandbox Code Playgroud)
和,
values = [1, 1, 1]
dates = pd.to_datetime(np.repeat('2018-03-05', 3))
df = pd.DataFrame({
'value': values
}, index=dates)
df.resample('W-MON', label='left',closed='left').size()
Run Code Online (Sandbox Code Playgroud)
输出:
2018-03-05 3
Freq: W-MON, dtype: int64
Run Code Online (Sandbox Code Playgroud)
关于文档的有趣说明,签名指出“关闭”默认为无。但是,文档字符串指出“关闭”默认为“左”。
| 归档时间: |
|
| 查看次数: |
2219 次 |
| 最近记录: |