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

如何用Pandas计算DataFrame两日期列间的工作日天数?

计算DataFrame中每行日期的工作日天数差

你可以使用**numpy的np.busday_count**实现向量化计算,不需要遍历DataFrame,这是处理批量日期工作日差的高效方法。

核心代码

假设你的DataFrame两列日期字段为date和date2,且已经是datetime格式,直接执行:

import numpy as np
import pandas as pd

df['Bus_days'] = np.busday_count(
    df['date'].values.astype('datetime64[D]'),
    df['date2'].values.astype('datetime64[D]')
)

为什么你之前的方法失效?

  • [df['date'], df['date2']].asfreq(BDay()).count():列表没有asfreq方法,且asfreq是用于调整时间序列频率的,不适合计算日期差。
  • pd.bdate_range(df['date'], df['date2']).count():pd.bdate_range仅接受单个日期作为起止参数,无法直接处理Series类型的批量日期。
  • len(pd.date_range(start=df['date'],end=df['date2'],freq='B')):同上,date_range不支持Series作为起止输入,只能处理单个值。
  • ((df['date'] - df['date2'])).count():这个方法是统计非空值的数量,完全不是计算工作日差。

扩展:自定义节假日排除

如果需要排除特定节假日,可以给np.busday_count传入holidays参数:

# 定义节假日列表,格式为datetime64[D]
custom_holidays = np.array(['2023-03-10', '2023-05-01'], dtype='datetime64[D]')

df['Bus_days'] = np.busday_count(
    df['date'].values.astype('datetime64[D]'),
    df['date2'].values.astype('datetime64[D]'),
    holidays=custom_holidays
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 06:22:21