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

Pandas将timedelta64转换为float时出现NaN值的问题求解

问题原因

  1. 出现大量NaN的核心原因:你转换时使用了df[:5]['duration']仅提取前5行数据参与计算,将计算结果赋值给全表duration列时,前5行以外的所有行都会被自动填充为NaN。
  2. 第二次运行报错的核心原因:第一次执行转换代码后,duration列已经从timedelta64类型变为float类型,float类型无法和timedelta64类型直接做除法运算,因此触发类型错误。

解决方法

如果你需要将全表的行程时长统一转换为秒级浮点数值,可以直接使用pandas自带的dt.total_seconds()方法完成转换,不需要额外引入numpy做运算,操作代码如下:

# 先重新计算timedelta类型的时长,覆盖之前错误生成的float类型值
df['dropoff_time'] = pd.to_datetime(df['tpep_dropoff_datetime'])
df['pickup_time'] = pd.to_datetime(df['tpep_pickup_datetime'])
df['duration'] = df['dropoff_time'] - df['pickup_time']

# 直接转换为秒级浮点值
df['duration'] = df['duration'].dt.total_seconds()

如果需要用numpy方式实现,去掉行切片即可:

df['duration'] = df['duration'] / np.timedelta64(1, 's')

内容的提问来源于stack exchange,提问作者DJ-coding

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:48:02