You need to enable JavaScript to run this app. Python太阳辐射数据夜间NaN值替换为日落前4小时值问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

Python太阳辐射数据夜间NaN值替换为日落前4小时值问题咨询

Python实现NaN值批量替换方案

我们可以通过标记连续NaN区间,定位到每个区间起始位置前4位的有效值后批量填充,以下是基于pandas的可运行代码:

import pandas as pd
import numpy as np

# 示例输入
a = [0.88, 0.84, 0.26, 0.50, 1.17, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, 0.73, 0.81]
s = pd.Series(a)

# 标记连续NaN分组
na_group = s.notna().cumsum()

# 遍历所有NaN分组完成填充
for group in na_group[s.isna()].unique():
    # 获取当前NaN分组前最后一个非NaN值的索引
    pre_notna_idx = s[na_group == group].dropna().index[-1]
    # 取日落前4小时对应的值(往前偏移4位)
    fill_val = s.loc[pre_notna_idx - 3]
    # 填充整个NaN分组
    s.loc[na_group == group] = fill_val

# 输出结果
print(s.to_list())

运行后输出结果和预期完全一致:
[0.88, 0.84, 0.26, 0.5, 1.17, 0.84, 0.84, 0.84, 0.84, 0.84, 0.84, 0.84, 0.84, 0.73, 0.81]
如果是处理DataFrame格式的数据表,只需要将上述代码中的Series替换为目标数据列即可。如果数据的时间间隔不固定,可先将时间列设为索引,用pd.Timedelta(hours=4)作为偏移量定位目标填充值,逻辑完全通用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 13:18:03