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

如何给datetime64类型添加时长?DataFrame计算到达时间陷入死循环

问题分析与解决方案

你的代码问题

你用循环遍历ACTUAL_ELAPSED_TIME的每个值,每次都给整个ARRIVAL列赋值,这会导致两个核心问题:

  • 循环完全多余:每次赋值都会覆盖之前的结果,最终ARRIVAL列只会保留最后一次循环的计算结果
  • 效率极低:对大DataFrame来说,这种逐标量的循环操作会让程序运行极慢,看起来像陷入死循环

正确实现方式

Pandas支持矢量化操作,直接对整列进行计算,不需要写循环:

# 将飞行分钟数列转换为时间增量类型
flight_duration = pd.to_timedelta(df['ACTUAL_ELAPSED_TIME'], unit='m')
# 计算到达时间列
df['ARRIVAL'] = df['DEPARTURE'] + flight_duration

或者更简洁的一行写法:

df['ARRIVAL'] = df['DEPARTURE'] + pd.to_timedelta(df['ACTUAL_ELAPSED_TIME'], unit='m')

为什么这样可行?

  • pd.to_timedelta可以直接接收整列整数,把每个值转换成对应的分钟时间增量,返回一个和原列长度一致的TimedeltaSeries
  • 当datetime类型的列和Timedelta类型的列相加时,Pandas会自动逐行匹配计算,实现高效的矢量化运算,比循环快几个数量级

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 14:24:29