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

Python pandas如何计算上一次非NaN温度读数的Unix时间差

问题根源

原有代码使用df['unixTime'].diff()仅能计算相邻两行的时间差,无法自动跳过Temperature列值为NaN的无效记录,不能定位到上一次存在有效温度读数的时间点做差,不符合计算要求。

实现方案

采用pandas向量化运算实现,无需手写循环,执行效率高,逻辑如下:

  • 先提取所有温度有效(非NaN)记录对应的unixTime,温度无效的位置对应时间置为NaN
  • 对提取出的有效时间做前向填充,让每一行都能拿到它上方最近的一个有效温度对应的时间点
  • 用当前行的unixTime减去前向填充得到的最近有效时间,得到目标时间差列

完整可运行代码:

# 提取有效温度对应的时间点,无效温度位置置空
valid_temp_time = df["unixTime"].where(df["Temperature"].notna())
# 前向填充,每行匹配上一个最近的有效温度时间
last_valid_temp_time = valid_temp_time.ffill()
# 计算时间差,赋值为新列
df["time_diff_from_last_valid_temp"] = df["unixTime"] - last_valid_temp_time
效果说明

以测试数据为例,计算结果完全匹配需求:

unixTimeTemperature计算得到的时间差
10025.1NaN(无前置有效温度)
200NaN100
300NaN200
40026.3300
500NaN100
60025.8200

如果需要处理第一条有效温度前的NaN值,可以根据业务需求自行调用fillna()填充指定值即可。

内容的提问来源于stack exchange,提问作者P.Sal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 00:15:45