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

如何在Pandas中将整数转换为以天为单位的timedelta类型

问题原因

你原有代码中astype('timedelta64[ns]')指定了时间差的单位为纳秒,输入的整数值会被识别为纳秒数,因此只会体现在时间的纳秒位,天数始终为0。

解决方案

方案1:生成标准timedelta类型(时间部分为0,匹配第二种期望输出)

可以直接修改timedelta的单位为天,两种写法均可:
写法1:调整astype的单位参数

df['Date_Numerical_Delta'] = df['Date_Numerical'].astype('timedelta64[D]')

写法2:用pandas自带的to_timedelta方法,可读性更高

import pandas as pd
df['Date_Numerical_Delta'] = pd.to_timedelta(df['Date_Numerical'], unit='D')

输出的Date_Numerical_Delta字段为原生timedelta类型,可直接用于后续时间差计算,展示时会显示为5 days 00:00:00格式。

方案2:生成仅显示天数的字符串格式(匹配第一种期望输出)

如果只需要展示纯天数的字符串格式,可在方案1的基础上做二次处理:

df['Date_Numerical_Delta'] = df['Date_Numerical'].astype('timedelta64[D]').dt.days.astype(str) + ' days'

注意:如果后续需要对时间差字段做算术运算、时间偏移等操作,推荐保留原生timedelta类型,不要转成字符串,避免额外的类型转换开销。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:15:04