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

Pandas旧脚本处理新Excel数据时报错的原因排查与修复

报错根因
  • 触发TypeError: '>=' not supported between instances of 'datetime.datetime' and 'str'的核心原因:更新后的数据源中,用于分组统计的日期列存在格式不统一的内容。Pandas读取Excel时,会把同列内的标准datetime值、非标准字符串格式的时间内容自动识别为混合类型,执行max/min聚合计算时,无法跨datetime对象和普通字符串做大小比较,直接抛错中断。
  • 导出环节的兼容问题:新版本Pandas对ExcelWriter的引擎参数做了严格大小写校验,此前兼容的'XlsxWriter'写法不再被识别,会导致后续Excel导出步骤运行失败。
对应修复操作
  • 数据源读取完成后,第一时间对参与聚合计算的日期列做强制类型转换,统一用pd.to_datetime()将该列转为标准datetime类型,从根源避免混合类型比较的报错。如果源数据存在完全无法解析的异常日期值,可以在转换时追加errors='coerce'参数,把识别不了的异常值自动转为空值,保障脚本不会因为个别脏数据中断。
  • 将导出代码块中的引擎参数engine='XlsxWriter'调整为全小写的engine='xlsxwriter',匹配新版本Pandas的参数校验规则。
修复后可运行代码
import pandas as pd
#import xlsxwriter

data_df = pd.read_excel("OppAvgStageDuration.xlsx")
# 统一转换日期列格式
data_df['CloseDate'] = pd.to_datetime(data_df['CloseDate']) 

data_df['MaxDate'] = data_df.groupby(['OpportunityID', 'OpportunityName', 'ToStage'])['CloseDate'].transform('max')
data_df['MinDate'] = data_df.groupby(['OpportunityID', 'OpportunityName', 'ToStage'])['CloseDate'].transform('min')
data_df['Difference'] = pd.to_datetime(data_df['MaxDate']) - pd.to_datetime(data_df['MinDate'])

agg_df = data_df.groupby(['OpportunityID', 'OpportunityName', 'ToStage']).agg(MaxDate=('CloseDate', 'max'),
                                                                              MinDate=('CloseDate', 'min')).reset_index()
agg_df['Difference'] = pd.to_datetime(agg_df['MaxDate']) - pd.to_datetime(agg_df['MinDate'])

#data_df.to_json(orient='records')

with pd.ExcelWriter('../out/ComputedReportOpps.xlsx', engine='xlsxwriter') as writer:
    data_df.to_excel(writer, sheet_name='New Computed Data', index=False)
    agg_df.to_excel(writer, sheet_name='Computed Agg Data', index=False)

print(data_df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 08:27:03