首页 > 解决方案 > 带有偏移量的工作日重采样

问题描述

我正在尝试使用resample带有偏移量的 Pandas 函数将每日频率数据重新采样到工作日,因此一周的最后一天变成星期四和星期天的开始。

这是到目前为止的代码:

import pandas as pd

resampled_data = df.resample('B', base=-1)

但它一直在重新采样,因此在重新采样中使用了周五,而排除了周日。我尝试了许多不同的值baseloffset但它不影响重采样。

请注意:原始数据使用 UTC 时间戳。时区是东部夏令时间。周日 UTC 21:00 - 周四 UTC 21:00。

标签: pythonpandas

解决方案


使用CustomBusinessDay(). 我重新采样了整个一月,包括周五/周六,也包括在内day_name(),并dayofweek表明它有效。

import datetime as dt

df = pd.DataFrame(index=pd.date_range(dt.datetime(2020,1,1), dt.datetime(2020,2,1)))
bd = pd.tseries.offsets.CustomBusinessDay(n=1, 
                                          weekmask="Sun Mon Tue Wed Thu")
df = df.resample(rule=bd).first().assign(
    day=lambda dfa: dfa.index.day_name(),
    dn=lambda dfa: dfa.index.dayofweek
    
)

输出

                  day  dn
2020-01-01  Wednesday   2
2020-01-02   Thursday   3
2020-01-05     Sunday   6
2020-01-06     Monday   0
2020-01-07    Tuesday   1
2020-01-08  Wednesday   2
2020-01-09   Thursday   3
2020-01-12     Sunday   6
2020-01-13     Monday   0
2020-01-14    Tuesday   1
2020-01-15  Wednesday   2
2020-01-16   Thursday   3
2020-01-19     Sunday   6
2020-01-20     Monday   0
2020-01-21    Tuesday   1
2020-01-22  Wednesday   2
2020-01-23   Thursday   3
2020-01-26     Sunday   6
2020-01-27     Monday   0
2020-01-28    Tuesday   1
2020-01-29  Wednesday   2
2020-01-30   Thursday   3

推荐阅读