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

为何出现TypeError:datetime64[ns]无法转换为timedelta64[ns]?

报错原因与解决方法

报错原因

pd.to_timedelta()的作用是转换时间间隔类数据(比如字符串"5 days"、数值型小时数等)为timedelta类型,但你传入的是已转为datetime64[ns]的具体日期值——这类数据是时间点而非时间间隔,直接转换会触发类型不兼容的TypeError。

解决方法

将日期转为天数的核心是计算日期与某个基准日期的时间差,再提取天数。以下是两种常用实现:

方式1:以数据中的最小日期为基准(计算相对天数)

import pandas as pd

# 先将日期列转为datetime类型,无效值转为NaT
df['dates'] = pd.to_datetime(df['dates'], errors='coerce')
# 计算每个日期与数据中最早日期的差值,提取天数
df['relative_days'] = (df['dates'] - df['dates'].min()).dt.days

方式2:以固定基准日期为基准(比如Unix纪元1970-01-01)

import pandas as pd

df['dates'] = pd.to_datetime(df['dates'], errors='coerce')
# 定义固定基准日期
base_date = pd.to_datetime('1970-01-01')
# 计算每个日期与基准日的天数差
df['days_since_epoch'] = (df['dates'] - base_date).dt.days

补充说明

由于使用了errors='coerce',无效的日期字符串会被转为NaT(Not a Time),对应的天数结果为NaN,可根据业务需求用fillna()等方法处理缺失值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 23:36:22