我在xarray数据集中加载了Netcdf文件,并且我希望在不包含the日的情况下进行日常气候分析,也就是其中不包括2月29日。我正在尝试syntax的Dataset.drop
方法对我来说不是那么直观。这是数据集
print(ds)
>><xarray.Dataset>
Dimensions: (lat: 1, lev: 1, lon: 720, time: 27133)
Coordinates:
* lon (lon) float32 -180.0 -179.5 -179.0 ... 178.5 179.0 179.5
* lev (lev) float32 1.0
* time (time) datetime64[ns] 2000-01-02T18:00:00 ... 2018-07-30
Dimensions without coordinates: lat
Data variables:
Var1 (time, lev, lon) float32 ...
Var2 (time, lat, lon) float64 ...
Var3 (time, lat, lon) float64 ...
我尝试了
ds_N_R.drop(['Var1', 'Var2', 'Var3'], time='2000-02-29')
>>TypeError: drop() got an unexpected keyword argument 'time'
##another approach
ds_N_R.sel(time='2000-02-29').drop(['Var1', 'Var2', 'Var3'])
## gives not the result I intended
<xarray.Dataset>
Dimensions: (lev: 1, lon: 720, time: 4)
Coordinates:
* lon (lon) float32 -180.0 -179.5 -179.0 -178.5 ... 178.5 179.0 179.5
* lev (lev) float32 1.0
* time (time) datetime64[ns] 2000-02-29 ... 2000-02-29T18:00:00
Data variables:
*empty*
我该如何进行?非常高兴知道是否有一种直接的方法,通过该方法我可以仅考虑一年中的365天来计算每日气候,但是我也想知道如何在需要时从特定时间段删除数据。
答案 0 :(得分:2)
在这里使用drop()
的正确方法是:
ds_N_R.drop([np.datetime64('2000-02-29')], dim='time')
但是我认为实际上可以通过索引操作更干净地完成此操作,例如,
ds_N_R.sel(time=~((ds_N_R.time.dt.month == 2) & (ds_N_R.time.dt.day == 29)))