【发布时间】:2021-12-12 19:35:50
【问题描述】:
我有两个 ncdf 文件,一个包含纬度/经度坐标,一个包含实际数据。坐标数组的每个单元格分别包含关于 lat 和 lon 的信息。我试图获得一个组合数据集(以便能够使用它),我也想对其进行子集化。因此,我使用xarray.open_dataset() 打开两个数据集,将它们转换为 pandas 数据框,并将数据列附加到带有坐标的数据框。之后我使用.between() 创建子集。我还使用.set_index() 将纬度/经度设置为新索引。到目前为止,一切都很好。下一步是将数据帧转换回xarray,然后将组合数据集写回ncdf,但是当我使用.to_xarray() 进行xarray 转换时,出现以下错误:
ValueError:无法转换具有非唯一 MultiIndex 的 DataFrame 进入 xarray
我找到了similar case,但那里提供的答案对我的情况没有意义。不可能有重复的坐标对。
我的代码如下:
import xarray as xr
geo_path = 'PATH/TO/geolocation.nc'
dat_path = 'PATH/TO/data.nc'
# Open datasets
geo_ds = xr.open_dataset(geo_path)
dat_ds = xr.open_dataset(dat_path)
# Transform to dataframe
geo_df = geo_ds.to_dataframe()
dat_df = dat_ds.to_dataframe()
# Add coordinates to the actual data
dat_df['lat'] = geo_df['lat']
dat_df['lon'] = geo_df['lon']
# Create subset
dat_filter = dat_df[(dat_df['lat'].between(60, 71) & dat_df['lon'].between(132, 138))]
# Set new index
dat_filter = dat_filter.set_index(['lat', 'lon'])
# Convert back to xarray
dat_filter.to_xarray()
可以在here (79.3 mb) 找到这些文件,当然,我们将不胜感激。
【问题讨论】:
标签: python dataframe netcdf python-xarray