索引数据集/数据数组中的非连续时间序列

时间:2019-04-11 11:46:17

标签: python python-xarray

我想从我的数据集中为时间序列中的相应值选择数据。时间序列中的日期不是连续的。因此,我不能将slice与sel一起使用。这是我的数据集索引的样子

ds.indexes
>longitude:Float64Index
>time: DatetimeIndex

对于Pandas数据框,如果我有一个基于时间的索引,那么我可以简单地使用基于标签的索引,例如

df.loc[['1979-01-09 00:00:00', '1979-01-09 06:00:00']]

Xarray索引基于Pandas,但我不知道如何实现上述方法

ds.var1.loc[['1979-01-09 00:00:00', '1979-01-09 06:00:00']]
>KeyError: "not all values found in index 'time'"

我也尝试过:

ds.var1.sel(dict(time=('1979-01-09 00:00:00', '1979-01-09 06:00:00')))
>TypeError: Cannot convert input [('1979-01-09 00:00:00', '1979-01-09 06:00:00')] of type <class 'tuple'> to Timestamp

很高兴知道如何通过.locsel方法来完成这项工作

1 个答案:

答案 0 :(得分:1)

我认为您首先需要将字符串转换为datetime对象。 pandas.to_datetime应该可以解决问题:

import pandas as pd
import xarray as xr

times = pd.date_range('2000-01-01', periods=3, freq='MS')
da = xr.DataArray(range(3), coords=[times], dims=['time'], name='a')
result = da.sel(time=pd.to_datetime(['2000-01-01', '2000-03-01']))