我想从我的数据集中为时间序列中的相应值选择数据。时间序列中的日期不是连续的。因此,我不能将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
很高兴知道如何通过.loc
和sel
方法来完成这项工作
答案 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']))