You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何按工作日筛选DataFrame的指定行范围

Python 按工作日筛选 DataFrame 指定行范围教程

示例图示

以下是基于 Pandas 库的完整实现方案,适配绝大多数常规场景:

前置准备

确保你的 DataFrame 包含格式为日期时间类型的日期列,如果读入数据时日期列为字符串格式,需要先做类型转换。

实现逻辑

  • 先确认行范围筛选的顺序:你可以选择「先切指定行范围、再筛工作日」,或者「先筛所有工作日、再切指定行范围」,按需调整操作顺序即可
  • 用 Pandas 内置的日期属性判断工作日:dt.isoweekday() 返回值 1~5 对应周一到周五,6、7 对应周末

注意:Pandas 的 iloc 索引从0开始计数,切取范围为左闭右开规则,如果要取第3行到第15行的内容,需要写 iloc[2:15]

完整代码示例

import pandas as pd

# 示例数据构造,可替换为你的实际数据读入逻辑,比如 pd.read_excel/ pd.read_csv
df = pd.DataFrame({
    "date": pd.date_range(start="2024-01-01", end="2024-01-31"),
    "data": [i for i in range(31)]
})

# 转换日期列为datetime类型,非日期类型的列必须执行此步
df["date"] = pd.to_datetime(df["date"])

# 场景1:先取第5行到第20行,再筛选范围内的工作日
df_range = df.iloc[4:20]
workday_df = df_range[df_range["date"].dt.isoweekday().between(1, 5)]

# 场景2:先筛选全表所有工作日,再取结果的前10行
# all_workday = df[df["date"].dt.isoweekday().between(1, 5)]
# workday_df = all_workday.iloc[:10]

print(workday_df)

扩展:包含法定节假日的工作日筛选

如果需要排除法定节假日、计入调休工作日(适配国内场景),可以使用第三方库 chinese_calendar 实现:

  1. 先安装依赖:pip install chinese-calendar
  2. 替换筛选逻辑即可:
from chinese_calendar import is_workday

workday_df = df_range[df_range["date"].apply(is_workday)]

内容的提问来源于stack exchange,提问作者JaeSeok Lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 13:24:05