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

解决Pandas从v1升级到v2后timedelta64类型转换ValueError

Pandas 2.0中timedelta按天转换的替代方案

Pandas 2.0对timedelta64类型的astype转换做了限制,不再支持直接转换到timedelta64[D]维度,仅保留秒(s)、毫秒(ms)、微秒(us)、纳秒(ns)的转换支持,这就是你遇到报错的原因。

针对你的需求,有以下几种替代方案:

方案1:获取整数天数(最直接)

如果只需要天数的数值(整数类型),直接使用dt.days属性提取:

df['recency'] = df['recency'].dt.days

方案2:保留timedelta类型

若需要保持结果为timedelta类型,可先提取天数再用pd.to_timedelta转换:

df['recency'] = pd.to_timedelta(df['recency'].dt.days, unit='D')

方案3:截断/取整到整天的timedelta

如果需要对原timedelta进行截断(或取整)到整天,使用dt.floor()或dt.round()方法:

# 截断到整天(舍去时分秒)
df['recency'] = df['recency'].dt.floor('D')
# 或四舍五入到整天
df['recency'] = df['recency'].dt.round('D')

修改后的完整示例代码

import pandas as pd
df = pd.DataFrame({'designation_date': ['2021-01-01', '2021-01-02']})
df['recency'] = pd.to_datetime('today') - pd.to_datetime(df['designation_date'])
# 任选一种方案替换原astype行
df['recency'] = df['recency'].dt.days  # 方案1示例

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 13:42:48