我正在尝试使用Pandas resample
函数将每日频率数据重新采样到工作日,并使用偏移量,以便将一周的最后一天变为周四,并将周日开始。
这是到目前为止的代码:
import pandas as pd
resampled_data = df.resample('B', base=-1)
但是它一直在重新采样,因此在重新采样中使用了星期五,但不包括星期日。我为base
和loffset
尝试了许多不同的值,但这并没有影响重采样。
请注意:原始数据使用的是UTC时间戳。时区是美国东部夏令时间。 UTC周日21:00-UTC周四21:00。
答案 0 :(得分:0)
使用CustomBusinessDay()
。我已经对整个1月的采样进行了重新采样,其中包括Fri / Sat,还包括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