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

Python处理Excel日期列报错:datetime与time类型无法比较

问题与解决方案

问题详情

读取含日期列的Excel表格后,Paid Start Date列同时存在两种数据类型:部分是带日期的datetime.datetime(如第29000行的datetime.datetime(2022, 8, 10, 0, 0)),部分是仅含时间的datetime.time(如00:00:00),列的dtype为object。调用sheets['Paid Start Date'].min()或sheets['Paid Start Date'].max()时触发错误:

TypeError: '<=' not supported between instances of 'datetime.time' and 'datetime.datetime'

解决方法

1. 统一转换为datetime类型(补默认日期)

若纯时间值对应默认日期(如Excel起始日期1900-01-01),可遍历列将datetime.time转为datetime.datetime:

from datetime import datetime, date, time
import pandas as pd

def convert_time_to_datetime(val):
    if isinstance(val, datetime):
        return val
    elif isinstance(val, time):
        return datetime.combine(date(1900, 1, 1), val)
    return pd.NaT

sheets['Paid Start Date'] = sheets['Paid Start Date'].apply(convert_time_to_datetime)

转换后列类型变为datetime64[ns],可正常调用min()、max()。

2. 将纯时间值转为空值(NaT)

若纯时间值为无效数据,直接转为NaT,计算时自动忽略:

import pandas as pd
from datetime import datetime

sheets['Paid Start Date'] = sheets['Paid Start Date'].apply(
    lambda x: x if isinstance(x, datetime) else pd.NaT
)
# 调用min/max,默认跳过空值
min_date = sheets['Paid Start Date'].min()
max_date = sheets['Paid Start Date'].max()

3. 读取Excel时强制解析日期(推荐)

若Excel原始数据应为日期格式,读取时指定parse_dates参数强制解析:

import pandas as pd

sheets = pd.read_excel('your_excel_file.xlsx', parse_dates=['Paid Start Date'])

此方法可从源头避免类型混合问题,若仍有纯时间单元格,再结合上述方法二次处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 00:36:28