Python 从 netcdf 列更改 xarray 维度坐标值
Python change xarray dimension coordinate values from netcdf column
我有两个数据集:
- 具有转换时间数据的数据帧 df
- 我磁盘上的一个 netCDF 文件,加载为 xarray.Dataset ds.
netcdf/xarray有3个维度:时间、纬度、经度。
我想用数据帧的转换值更新 xarray.Dataset 中的时间维度。目前,我是这样做的:
import xarray as xr
# load netcdf
ds = xr.open_dataset('msr.nc', decode_times= False) # as the time data is not correct
# Copy converted time
ds['time'] = df['conv_time']
坐标更新为另一列,但原始坐标保持不变。
xarray.Dataset 如下所示:
> Dimensions: dim_0: 504 longitude: 720 latitude: 361 time: 504
> Coordinates:
time (dim_0) datetime64[ns] 1979-01-15 ... 2020-12-15
longitude (longitude) float32 -179.5 -179.0 ... 179.5 180.0
latitude (latitude) float32 -90.0 -89.5 -89.0 ... 89.5 90.0
dim_0 (dim_0) int64 0 1 2 3 4 5 ... 499 500 501 502 503
它似乎创建了一个新的时间维度并创建了一个新的时间维度(dim_0),但没有正确地使用更新的日期时间坐标创建 link。
文件现在有 4 个维度,但只有 3 个坐标,它仍然 link 指向错误的坐标。
我试过创建一个新坐标,删除另一个坐标,交换名称。但这一切都行不通。我只是想简单地将时间维度的值更改为我已有的值。
如何解决此问题以确保更新时间是唯一的时间维度?
很简单,使用:
ds["time"] = ("time", updated_times)
我有两个数据集:
- 具有转换时间数据的数据帧 df
- 我磁盘上的一个 netCDF 文件,加载为 xarray.Dataset ds.
netcdf/xarray有3个维度:时间、纬度、经度。
我想用数据帧的转换值更新 xarray.Dataset 中的时间维度。目前,我是这样做的:
import xarray as xr
# load netcdf
ds = xr.open_dataset('msr.nc', decode_times= False) # as the time data is not correct
# Copy converted time
ds['time'] = df['conv_time']
坐标更新为另一列,但原始坐标保持不变。
xarray.Dataset 如下所示:
> Dimensions: dim_0: 504 longitude: 720 latitude: 361 time: 504
> Coordinates:
time (dim_0) datetime64[ns] 1979-01-15 ... 2020-12-15
longitude (longitude) float32 -179.5 -179.0 ... 179.5 180.0
latitude (latitude) float32 -90.0 -89.5 -89.0 ... 89.5 90.0
dim_0 (dim_0) int64 0 1 2 3 4 5 ... 499 500 501 502 503
它似乎创建了一个新的时间维度并创建了一个新的时间维度(dim_0),但没有正确地使用更新的日期时间坐标创建 link。
文件现在有 4 个维度,但只有 3 个坐标,它仍然 link 指向错误的坐标。
我试过创建一个新坐标,删除另一个坐标,交换名称。但这一切都行不通。我只是想简单地将时间维度的值更改为我已有的值。
如何解决此问题以确保更新时间是唯一的时间维度?
很简单,使用:
ds["time"] = ("time", updated_times)