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

如何将Pandas DataFrame的timedelta列转换为float列

解决timedelta64[ns]转float类型的问题

哦,这个问题我之前也碰到过!直接用astype(float)确实不行,因为timedelta64[ns]是时间差专属的数据类型,没办法直接转换成float,得先把时间差提取成具体的数值单位才行。

针对你的需求(只提取天数并转成float),有两种简单的解决方法:

方法1:提取整天数转float

如果你的时间差都是整天数(就像示例里那样),直接用dt.days提取天数,再转成float类型就可以了:

df_EVENT5_24['ColA'] = df_EVENT5_24['ColA'].dt.days.astype(float)

这样处理后,列里的数值就会变成227.0、316.0这类float格式的天数。

方法2:支持小数天数的转换

如果你的数据里有不足一天的时间差(比如1天12:00:00),想要保留小数形式的天数(比如1.5),可以用total_seconds()把时间差转换成总秒数,再除以一天的总秒数(246060):

# 转换为以天为单位的float,支持小数
df_EVENT5_24['ColA'] = df_EVENT5_24['ColA'].dt.total_seconds() / (24 * 60 * 60)

这两种方法都能完美解决你遇到的TypeError问题,选适合你数据情况的就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:21:38