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

如何在Pandas DataFrame中计算两个日期的天数差(仅排除周日)

在Pandas DataFrame中计算仅排除周日的日期天数差

要计算两个日期之间的天数差且仅排除周日(周六保留),核心逻辑是总天数减去日期范围内的周日数量,下面提供两种实用方法:

方法1:自定义函数(适合小数据集)

写一个简单的函数遍历每行日期范围,统计周日数量后计算差值:

import pandas as pd
import numpy as np

def calc_days_excl_sunday(start, end):
    # 生成完整的日期序列
    date_range = pd.date_range(start=start, end=end)
    # 统计周日数量(weekday=6代表周日)
    sunday_num = np.sum(date_range.weekday == 6)
    # 总天数(含首尾)减去周日数
    return (end - start).days + 1 - sunday_num

# 测试用DataFrame
df = pd.DataFrame({
    'start': ['2024-05-01', '2024-05-10'],
    'end': ['2024-05-07', '2024-05-15']
})

# 先转换日期格式
df['start'] = pd.to_datetime(df['start'])
df['end'] = pd.to_datetime(df['end'])

# 应用函数计算结果
df['days_excl_sunday'] = df.apply(lambda row: calc_days_excl_sunday(row['start'], row['end']), axis=1)

print(df)

运行后输出:

start        end  days_excl_sunday
0 2024-05-01 2024-05-07                 6
1 2024-05-10 2024-05-15                 5

方法2:向量化运算(适合大数据集)

如果DataFrame行数很多,apply效率偏低,用向量化方法直接计算,速度更快:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'start': pd.to_datetime(['2024-05-01', '2024-05-10']),
    'end': pd.to_datetime(['2024-05-07', '2024-05-15'])
})

# 计算总天数(包含首尾日期)
total_days = (df['end'] - df['start']).dt.days + 1

# 定义函数统计从epoch到指定日期的周日总数
def count_total_sundays(date_series):
    days_since_epoch = (date_series - pd.Timestamp('1970-01-01')).dt.days
    # 1970-01-04是第一个周日(距离epoch3天)
    return np.where(days_since_epoch >= 3, (days_since_epoch - 3) // 7 + 1, 0)

# 计算[start, end]区间内的周日数:end的周日总数 - (start-1天)的周日总数
sundays_before_start = count_total_sundays(df['start'] - pd.Timedelta(days=1))
sundays_up_to_end = count_total_sundays(df['end'])
sunday_count = sundays_up_to_end - sundays_before_start

# 最终结果
df['days_excl_sunday'] = total_days - sunday_count

print(df)

注意事项

  • 必须确保日期列是datetime64类型,否则先用pd.to_datetime()转换
  • 如果存在start > end的情况,可以加入判断逻辑返回负数或0
  • 方法2的向量化运算比方法1的apply快数倍以上,适合处理十万行级别的数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 07:52:41