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

解决字符串转datetime类型后日期被篡改的问题

解决Pandas转换时间列时日期被篡改的问题

问题原因

当使用pd.to_datetime()处理仅包含时间(无日期)的字符串时,Pandas会自动为其附加一个默认日期(通常是代码运行当天的日期,这里显示的2023-12-29就是该情况),而非关联到order_date列的正确日期。

解决方案

根据需求选择以下两种方式:

1. 仅保留时间部分

如果只需要提取时间信息,指定时间格式后提取time类型:

# 指定时间格式解析order_time,提取时间部分
df['order_time'] = pd.to_datetime(df['order_time'], format='%I:%M:%S %p').dt.time

处理后order_time列仅显示11:38:36这类时间值,无多余日期。

2. 合并日期与时间为完整datetime

如果需要完整的日期时间数据,将order_date的日期与order_time的时间拼接后转换:

# 拼接日期和时间字符串,转换为完整datetime
df['full_order_datetime'] = pd.to_datetime(
    df['order_date'].astype(str) + ' ' + df['order_time'],
    format='%Y-%m-%d %I:%M:%S %p'
)

这样得到的full_order_datetime列会是2023-01-01 11:38:36这类正确的完整日期时间值。

关键说明

  • 必须指定format='%I:%M:%S %p':因为你的时间是12小时制带AM/PM标识,这个格式能准确解析时间字符串,避免Pandas自动推断出错。
  • %I对应12小时制的小时数,%p匹配AM/PM,%M和%S分别对应分钟和秒。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 11:17:22