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

合并Date与Time列为Datetime对象失败,遇ValueError错误求助

解决pandas合并Date和Time列转datetime时的格式错误问题

这个问题我之前处理过,核心原因就是你的Date或Time列的字符串格式和pandas默认的解析规则不匹配,导致它没法识别。咱们可以按下面的步骤来排查和解决:

第一步:先确认你的数据格式

先打印几行Date和Time列的实际内容,搞清楚它们的具体格式:

print(data1[['Date', 'Time']].head())

比如你可能会看到Date是01/05/2023(日/月/年),Time是14:30:00,或者其他格式,这一步是后续处理的关键。

第二步:指定明确的解析格式(最稳妥)

如果已经知道了Date和Time的格式,直接在pd.to_datetime里用format参数告诉pandas怎么解析,这样既快又不会出错。举几个常见的例子:

  • 如果Date是dd/mm/yyyy,Time是HH:MM:SS:
    data1['Datetime'] = pd.to_datetime(data1['Date'] + ' ' + data1['Time'], format='%d/%m/%Y %H:%M:%S')
    
  • 如果Date是yyyy-mm-dd,Time是HH:MM:
    data1['Datetime'] = pd.to_datetime(data1['Date'] + ' ' + data1['Time'], format='%Y-%m-%d %H:%M')
    

这里的格式符对应规则:%d=两位日,%m=两位月,%Y=四位年,%H=24小时制小时,%M=分钟,%S=秒。

第三步:排查异常数据

如果还是报错,可能是数据里存在格式错误的行,比如空值、乱码或者不符合格式的字符串。可以用errors='coerce'把解析失败的行标记为NaT,然后找出这些异常行:

# 先尝试解析,失败的设为NaT
data1['Datetime'] = pd.to_datetime(data1['Date'] + ' ' + data1['Time'], errors='coerce')
# 筛选出解析失败的行查看
print(data1[data1['Datetime'].isna()][['Date', 'Time']])

找到这些异常行后,要么修正格式,要么根据需求删除这些行。

第四步:另一种合并思路(分别解析再相加)

如果Time列的格式比较特殊(比如只有分钟数或者其他格式),可以把Date转成datetime对象,Time转成timedelta对象,然后相加得到最终的Datetime:

# 先转Date列
data1['Date'] = pd.to_datetime(data1['Date'], format='%d/%m/%Y')
# 转Time列为时间差
data1['Time'] = pd.to_timedelta(data1['Time'])
# 相加得到Datetime
data1['Datetime'] = data1['Date'] + data1['Time']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:47:19