pandas实现不同维度两个Dataframe插值匹配缺失坐标值的方法
实现方案
你需要的是空间坐标插值匹配,用scipy的griddata工具就能快速实现,全程只需要3步即可完成,适配你当前的数据集规模:
步骤1:导入依赖库
import pandas as pd import numpy as np from scipy.interpolate import griddata
步骤2:提取插值源和目标坐标
# 提取稀疏温度数据的坐标与对应温度值作为插值源 temp_coords = temp_df[["x", "y"]].values temp_values = temp_df["value"].values # 提取辐射数据的坐标作为插值目标(最终温度数据要匹配的坐标) target_coords = radiation_df[["x", "y"]].values
步骤3:执行空间插值
你可以根据需求选择插值方法,新手优先选前两种即可:
nearest(最近邻插值):运算速度最快,180万行数据几秒就能跑完,无空值linear(线性插值):结果更平滑,精度更高,运算速度中等cubic(三次样条插值):平滑度最高,适合需要连续曲面的场景,运算速度最慢
# 替换method参数即可切换插值方法 radiation_df["temperature"] = griddata(temp_coords, temp_values, target_coords, method="nearest")
校验与异常处理
- 插值完成后可执行
radiation_df["temperature"].isna().sum()统计空值数量,若空值极少可直接删除或填充区域均值,空值多说明辐射数据范围超出了温度数据的覆盖边界,可裁剪辐射数据到温度数据的坐标范围内再重新插值 - 可抽取两个数据集重合的坐标点(如样例中x=-83.925、y≈17.508的点),比对原始温度值和插值结果,验证插值准确性
内容的提问来源于stack exchange,提问作者richo
相关产品推荐
相关产品推荐

