如何修复 pandas v2“ValueError:无法从 timedelta64[ns] 转换为 timedelta64[D]。”

问题描述 投票:0回答:2

从 pandas 版本 1 升级到 2.0.0 时,我突然在将 pandas 升级到版本 2 之前运行良好的脚本中得到一个

ValueError

ValueError: Cannot convert from timedelta64[ns] to timedelta64[D].
Supported resolutions are 's', 'ms', 'us', 'ns'

这是一个可重现性最低的示例:

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'])
df['recency'] = df['recency'].astype('timedelta64[D]')

我需要用什么替换

df['recency'].astype('timedelta64[D]')
才能使代码与 pandas v2 一起使用?

使用

astype('timedelta64[D]')
在整个 SO 的答案中被大量使用,例如这里

python pandas type-conversion timedelta
2个回答
2
投票

使用

.dt.days
访问器而不是
astype('timedelta64[D])

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

从 v1 到 v2 的行为变化记录在 Pandas 变更日志中


0
投票

df['新近度'] = pd.to_timedelta(df['新近度']) df['新近度'] = df['新近度'].dt.days

© www.soinside.com 2019 - 2024. All rights reserved.