看过来
《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 工作日