看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
pandas 的 bdate_range 方法用于生成一个以工作日为基础的时间序列。与 date_range 不同,bdate_range 默认会跳过周末,并支持灵活定义工作日掩码和节假日。这对于金融数据分析、业务时间表管理等场景非常有用。
DatetimeIndex 对象,用于创建时间索引或构造时间序列数据。pandas.bdate_range(
start=None,
end=None,
periods=None,
freq='B',
tz=None,
normalize=True,
name=None,
weekmask=None,
holidays=None,
inclusive='both',
**kwargs
)
start(可选)
datetime 对象。'2024-01-01' 或 pd.Timestamp('2024-01-01')。end(可选)
datetime 对象。periods(可选)
end 同时指定。freq(可选,默认为 'B')
'B' 表示标准工作日。'C' 表示自定义工作日频率(需结合 weekmask 和 holidays)。tz(可选)
'UTC')或 pytz 对象。normalize(可选,默认为 True)
name(可选)
DatetimeIndex 命名。weekmask(可选)
"Mon Tue Wed Thu Fri" 表示周一到周五是工作日。holidays(可选)
inclusive(可选,默认为 'both')
'both':包含起始和结束日期。'left':只包含起始日期。'right':只包含结束日期。'neither':两者都不包含。DatetimeIndex 对象。生成以工作日为基础的时间序列:
自定义工作日规则:
import pandas as pd
# 生成从 2024-01-01 到 2024-01-10 的工作日序列
bdates = pd.bdate_range(start='2024-01-01', end='2024-01-10')
print(bdates)
输出:
DatetimeIndex(['2024-01-01', '2024-01-02', '2024-01-03', '2024-01-04',
'2024-01-05', '2024-01-08', '2024-01-09', '2024-01-10'],
dtype='datetime64[ns]', freq='B')
说明:
'B',仅包含工作日。# 从起始日期开始,生成 7 个工作日
bdates = pd.bdate_range(start='2024-01-01', periods=7)
print(bdates)
输出:
DatetimeIndex(['2024-01-01', '2024-01-02', '2024-01-03', '2024-01-04',
'2024-01-05', '2024-01-08', '2024-01-09'],
dtype='datetime64[ns]', freq='B')
# 生成带有时区的工作日序列
bdates = pd.bdate_range(start='2024-01-01', end='2024-01-10', tz='UTC')
print(bdates)
输出:
DatetimeIndex(['2024-01-01 00:00:00+00:00', '2024-01-02 00:00:00+00:00',
'2024-01-03 00:00:00+00:00', '2024-01-04 00:00:00+00:00',
'2024-01-05 00:00:00+00:00', '2024-01-08 00:00:00+00:00',
'2024-01-09 00:00:00+00:00', '2024-01-10 00:00:00+00:00'],
dtype='datetime64[ns, UTC]', freq='B')
# 定义周一到周四为工作日,跳过周五和周末
bdates = pd.bdate_range(
start='2024-01-01',
end='2024-01-10',
weekmask='Mon Tue Wed Thu'
)
print(bdates)
输出:
DatetimeIndex(['2024-01-01', '2024-01-02', '2024-01-03', '2024-01-04',
'2024-01-08', '2024-01-09'],
dtype='datetime64[ns]', freq='C')
# 自定义节假日
holidays = ['2024-01-02', '2024-01-08']
bdates = pd.bdate_range(
start='2024-01-01',
end='2024-01-10',
holidays=holidays
)
print(bdates)
输出:
DatetimeIndex(['2024-01-01', '2024-01-03', '2024-01-04', '2024-01-05',
'2024-01-09', '2024-01-10'],
dtype='datetime64[ns]', freq='C')
bdate_range 是一个非常强大的工具,适合生成符合业务规则的时间序列。它的灵活性表现在:
适用于金融数据分析、项目计划管理等需要精准控制工作日的场景。
更新时间:2024-12-07 09:31:51 标签:pandas python 工作日