Python 工作日使用偏移重新采样

Python 工作日使用偏移重新采样,python,pandas,Python,Pandas,我正在尝试使用带有偏移量的Pandas函数将每日频率数据重新采样到工作日,以便一周的最后一天变成星期四,星期天开始 这是迄今为止的代码: import pandas as pd resampled_data = df.resample('B', base=-1) 但它一直在重新采样,因此在重新采样中使用星期五,而不包括星期天。我为base和loffset尝试了许多不同的值,但这并不影响重采样 请注意:原始数据使用UTC时间戳。时区是东部夏时制。周日UTC 21:00-周四UTC 21:00。

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

这是迄今为止的代码:

import pandas as pd

resampled_data = df.resample('B', base=-1)
但它一直在重新采样,因此在重新采样中使用星期五,而不包括星期天。我为
base
loffset
尝试了许多不同的值,但这并不影响重采样


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

使用
CustomBusinessDay()。我已经对整个1月进行了重新采样,包括周五/周六,还包括
day\u 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

使用
CustomBusinessDay()
。我已经对整个1月进行了重新采样,包括周五/周六,还包括
day\u 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

你能展示一个演示它如何不工作以及预期输出应该是什么的吗?你能展示一个演示它如何不工作以及预期输出应该是什么的吗?Rob,谢谢你的帮助。我将如何使用CBD在3、6或9个工作日内重新采样?以前我使用'3B'或'6B'作为频率。我还使用字典根据时间段分配频率和基准调整。我希望有一个简单的解决方案,这样我就可以保留格式freq={'D':['B',None],'H':['H',1],'M':['T',20]}CBD
n=
参数,我相信它的天数不同。您还可以通过额外的假期等。看看文档,还有CBT和CBD的功能,非常感谢您的帮助。我会尝试一下这些建议,看看效果如何。罗布,谢谢你的帮助。我将如何使用CBD在3、6或9个工作日内重新采样?以前我使用'3B'或'6B'作为频率。我还使用字典根据时间段分配频率和基准调整。我希望有一个简单的解决方案,这样我就可以保留格式freq={'D':['B',None],'H':['H',1],'M':['T',20]}CBD
n=
参数,我相信它的天数不同。您还可以通过额外的假期等。看看文档,还有CBT和CBD的功能,非常感谢您的帮助。我将尝试一下这些建议,看看效果如何。