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

如何修正pandas DataFrame倒置日期格式解决np.busday_count报错

问题修复方案

你之前的转换代码无效核心原因是参数用错了:dayfirst=True仅适用于日在最开头的日期格式(比如dd-mm-yyyy/dd/mm/yyyy),但你的Data Faturamento列是年-日-月的特殊结构,pandas默认按年-月-日规则解析,自然会把日月位置搞反,还保留了原始数据里的时分秒。

最简便的修复方式是解析时明确指定日期格式,不要让pandas自动猜格式,转完后抹掉时分秒即可,最终输出和Data Entrega列类型、格式完全一致,可直接传给np.busday_count()使用:

baseFinal["Data Faturamento"] = pd.to_datetime(
    baseFinal["Data Faturamento"],
    format="%Y-%d-%m %H:%M:%S"
).dt.normalize()

代码说明

  • format="%Y-%d-%m %H:%M:%S":明确告诉pandas解析规则:第一位是4位年份、第二位是日期、第三位是月份,后半段是时分秒,从根源避免日月解析错位
  • .dt.normalize():把所有日期的时间部分重置为当日0点,最终返回的列dtype仍为datetime64[ns],和你现有Data Entrega列的格式完全匹配,显示效果就是纯yyyy-mm-dd的日期,不带时分秒

之前代码的问题

  1. 错用dayfirst=True:该参数无法识别年开头、日在第二位的格式,解析阶段就把日月搞反了,后续不管怎么转类型,日期值本身都是错的
  2. 用.values.astype('datetime64[D]')虽然能去掉时分秒,但建立在前面解析错误的基础上,结果自然不符合预期

转完后可以用以下代码快速校验结果:

print(baseFinal[["Data Faturamento", "Data Entrega"]].head())

如果存在少量格式不匹配的异常值,可以在pd.to_datetime()里加errors='coerce'参数,把解析失败的值转为空值NaT方便后续排查。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 14:57:17