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

含地理数据的Pandas DataFrame转NetCDF耗时过长优化问题

Pandas点数据集转NetCDF文件方案

我有如下结构的Pandas DataFrame:

lat lon value
10   10  1

该数据集共包含700万条数据点,需要将其转换为数组最终生成NetCDF文件,此前尝试过两种方案:

  • 借助GDAL将DataFrame转换为点shapefile,再通过QGIS将shapefile转为栅格,该方案在8核M1处理器上仅需3-4分钟,但存在少量信息损失。
  • 直接将Pandas DataFrame转换为数组后写入.nc文件,代码通过joblib并行化,但预估在超级计算机18核Intel CPU上需要运行120小时,代码如下:
lati=np.round(np.linspace(np.min(df.lat),np.max(df.lat),lat_range+1),2)
loni=np.round(np.linspace(np.min(df.lon),np.max(df.lon),lon_range+1),2)
target_column = 'soil_moisture'
search_columns = ['lat','lon']
df_temp = df.set_index(search_columns)
def func(i,j):
    latitude= lati[i]
    longitude=loni[j]
    search_values = [latitude, longitude]
    value = df_temp.loc[tuple(search_values), target_column]
    return(value)

from joblib import Parallel, delayed
results= Parallel(n_jobs=-1, verbose=2)(delayed(func)(i, j) for i in range(lat_range+1) for j in range(lon_range+1)) 
m=np.reshape(results, (lat_range+1,lon_range+1))

该代码在测试数据集上运行正常,但在全量数据集上耗时极长。

最优实现方案

经过验证,最优方案是将Pandas DataFrame转换为xarray后再导出为NetCDF,运行效率极高,代码如下:

xr=df.set_index(['lat', 'lon']).to_xarray()
xr.to_netcdf(path='./new.nc', mode='w')

内容的提问来源于stack exchange,提问作者nirdesh k sharma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:57:03