我不确定这是否是一个愚蠢的问题,但我想按时间变量剪辑 .nc 文件。我在 xarray 中打开了数据集,但以下 ds.sel 行(之前已运行)仅返回错误。
ds = xr.open_dataset('/Users/mia/Desktop/RMP/data/tracking/mcs_tracks_2015_11.nc')
selected_days = ds.sel(time=slice('2015-11-22', '2015-11-23'))
KeyError: "'time' is not a valid dimension or coordinate for Dataset with dimensions FrozenMappingWarningOnValuesAccess({'index': 6181})"
我已检查以确保该文件确实包含日期时间格式的时间变量。下面是测试:
print(ds['time'])
<xarray.DataArray 'time' (index: 6181)> Size: 49kB
[6181 values with dtype=datetime64[ns]]
Coordinates:
* index (index) int64 49kB 12 17 22 23 27 ... 12300 12317 12320 12333 12338
是否有其他方法可以做到这一点或者我将如何解决这个问题?先感谢您!!
错误信息指出“time”不是数据集中的维度或坐标,即使它是 DataArray 中的变量。这意味着“time”很可能被设置为变量而不是坐标。
以下是如何使用 xarray 在 Python 中剪辑时间变量的方法:
1. 将“time”设置为坐标(如果它还不是坐标):
ds = ds.set_coords('time')
2. 使用
.sel
进行切片:
现在“time”是一个坐标,的
.sel
方法应该可以工作了:
selected_days = ds.sel(time=slice('2015-11-22', '2015-11-23'))
这将选择从 2015 年 11 月 22 日 00:00:00 到 2015 年 11 月 23 日 23:59:59 的所有数据。
其他考虑事项:
- 时间格式: 确保用于切片的日期字符串与数据集中“time”变量使用的格式相匹配。
- 时区: 如果的数据集包含时区信息,请注意切片时时区的处理方式。
如果在执行这些步骤后仍然遇到问题,请提供以下信息的摘录:
-
print(ds)
的输出以查看数据集的整体结构 - 正在使用的 xarray 的版本