Python xarray.dataset.sel返回不需要的值

Python xarray.dataset.sel返回不需要的值,python,pandas,python-xarray,Python,Pandas,Python Xarray,嗯,这很奇怪。我只希望得到第一个值,而不是一秒钟间隔内的所有值。我很想知道如何只选择想要的点 >>> wind.W_C.sel(Time = '2017-08-19T10:41:02.000000000', tolerance=0.0000000001).Time <xarray.DataArray 'Time' (Time: 32)> array(['2017-08-19T10:41:02.000000000', '2017-08-19T10:41:02.0312

嗯,这很奇怪。我只希望得到第一个值,而不是一秒钟间隔内的所有值。我很想知道如何只选择想要的点

>>> wind.W_C.sel(Time = '2017-08-19T10:41:02.000000000', tolerance=0.0000000001).Time
<xarray.DataArray 'Time' (Time: 32)>
array(['2017-08-19T10:41:02.000000000', '2017-08-19T10:41:02.031250000',
   '2017-08-19T10:41:02.062500000', '2017-08-19T10:41:02.093750000',
   '2017-08-19T10:41:02.125000000', '2017-08-19T10:41:02.156250000',
   '2017-08-19T10:41:02.187500000', '2017-08-19T10:41:02.218750000',
   '2017-08-19T10:41:02.250000000', '2017-08-19T10:41:02.281250000',
   '2017-08-19T10:41:02.312500000', '2017-08-19T10:41:02.343750000',
   '2017-08-19T10:41:02.375000000', '2017-08-19T10:41:02.406250000',
   '2017-08-19T10:41:02.437500000', '2017-08-19T10:41:02.468750000',
   '2017-08-19T10:41:02.500000000', '2017-08-19T10:41:02.531250000',
   '2017-08-19T10:41:02.562500000', '2017-08-19T10:41:02.593750000',
   '2017-08-19T10:41:02.625000000', '2017-08-19T10:41:02.656250000',
   '2017-08-19T10:41:02.687500000', '2017-08-19T10:41:02.718750000',
   '2017-08-19T10:41:02.750000000', '2017-08-19T10:41:02.781250000',
   '2017-08-19T10:41:02.812500000', '2017-08-19T10:41:02.843750000',
   '2017-08-19T10:41:02.875000000', '2017-08-19T10:41:02.906250000',
   '2017-08-19T10:41:02.937500000', '2017-08-19T10:41:02.968750000'], 
dtype='datetime64[ns]')
Coordinates:
  * Time     (Time) datetime64[ns] 2017-08-19T10:41:02 ...
>>>
风力发电机(时间='2017-08-19T10:41:02.000000000',公差=0.000000000 1)。时间 数组(['2017-08-19T10:41:02.000000000','2017-08-19T10:41:02.031250000', “2017-08-19T10:41:02.062500000”,“2017-08-19T10:41:02.093750000”, “2017-08-19T10:41:02.125000000”、“2017-08-19T10:41:02.15650000”, “2017-08-19T10:41:02.187500000”,“2017-08-19T10:41:02.218750000”, “2017-08-19T10:41:02.250000000”、“2017-08-19T10:41:02.281250000”, “2017-08-19T10:41:02.312500000”,“2017-08-19T10:41:02.343750000”, “2017-08-19T10:41:02.375000000”,“2017-08-19T10:41:02.406250000”, “2017-08-19T10:41:02.437500000”、“2017-08-19T10:41:02.468750000”, “2017-08-19T10:41:02.500000000”、“2017-08-19T10:41:02.531250000”, “2017-08-19T10:41:02.562500000”,“2017-08-19T10:41:02.593750000”, “2017-08-19T10:41:02.62500000”,“2017-08-19T10:41:02.656250000”, “2017-08-19T10:41:02.687500000”、“2017-08-19T10:41:02.718750000”, “2017-08-19T10:41:02.75000000”,“2017-08-19T10:41:02.781250000”, “2017-08-19T10:41:02.812500000”,“2017-08-19T10:41:02.843750000”, “2017-08-19T10:41:02.875000000”,“2017-08-19T10:41:02.906250000”, “2017-08-19T10:41:02.937500000”、“2017-08-19T10:41:02.968750000”, dtype='datetime64[ns]') 协调: *时间日期时间64[ns]2017-08-19T10:41:02。。。 >>> 编辑:对于任何不完全为x.0000000的时间值,它都能按预期工作(例如,使用time='2017-08-19T10:41:02.062500000'返回一个点)

编辑2:切片执行相同的操作:

>>> wind.W_C.sel(Time = slice('2017-08-19T10:41:01.999999999','2017-08-19T10:41:02.000000001'))
<xarray.DataArray 'W_C' (Time: 32)>
array([-0.365306, -0.351855, -0.301889, -0.315359, -0.340766, -0.366259,
   -0.361642, -0.318217, -0.346406, -0.310716, -0.188696, -0.206533,
   -0.228649, -0.219716, -0.259015, -0.348025, -0.251485, -0.251169,
   -0.29893 , -0.419135, -0.397326, -0.329589, -0.325526, -0.286838,
   -0.295504, -0.242547, -0.294295, -0.274641, -0.299403, -0.25828 ,
   -0.16487 , -0.317597], dtype=float32)
Coordinates:
  * Time     (Time) datetime64[ns] 2017-08-19T10:41:02 ...
>>>
>>风力发电选择(时间=slice('2017-08-19T10:41:01.99999999','2017-08-19T10:41:02.00000000 1'))
数组([-0.365306,-0.351855,-0.301889,-0.315359,-0.340766,-0.366259,
-0.361642, -0.318217, -0.346406, -0.310716, -0.188696, -0.206533,
-0.228649, -0.219716, -0.259015, -0.348025, -0.251485, -0.251169,
-0.29893 , -0.419135, -0.397326, -0.329589, -0.325526, -0.286838,
-0.295504, -0.242547, -0.294295, -0.274641, -0.299403, -0.25828 ,
-0.16487,-0.317597],数据类型=32)
协调:
*时间日期时间64[ns]2017-08-19T10:41:02。。。
>>>
编辑3:必须是xarray中的错误。即使在指定公差时要小心:

>>> wind.W_C.sel(Time = '2017-08-19T10:41:02.0', tolerance = np.timedelta64(1,'us')).Time
<xarray.DataArray 'Time' (Time: 32)>
array(['2017-08-19T10:41:02.000000000', '2017-08-19T10:41:02.031250000',
   '2017-08-19T10:41:02.062500000', '2017-08-19T10:41:02.093750000',
   '2017-08-19T10:41:02.125000000', '2017-08-19T10:41:02.156250000',
   '2017-08-19T10:41:02.187500000', '2017-08-19T10:41:02.218750000',
   '2017-08-19T10:41:02.250000000', '2017-08-19T10:41:02.281250000',
   '2017-08-19T10:41:02.312500000', '2017-08-19T10:41:02.343750000',
   '2017-08-19T10:41:02.375000000', '2017-08-19T10:41:02.406250000',
   '2017-08-19T10:41:02.437500000', '2017-08-19T10:41:02.468750000',
   '2017-08-19T10:41:02.500000000', '2017-08-19T10:41:02.531250000',
   '2017-08-19T10:41:02.562500000', '2017-08-19T10:41:02.593750000',
   '2017-08-19T10:41:02.625000000', '2017-08-19T10:41:02.656250000',
   '2017-08-19T10:41:02.687500000', '2017-08-19T10:41:02.718750000',
   '2017-08-19T10:41:02.750000000', '2017-08-19T10:41:02.781250000',
   '2017-08-19T10:41:02.812500000', '2017-08-19T10:41:02.843750000',
   '2017-08-19T10:41:02.875000000', '2017-08-19T10:41:02.906250000',
   '2017-08-19T10:41:02.937500000', '2017-08-19T10:41:02.968750000'], dtype='datetime64[ns]')
Coordinates:
  * Time     (Time) datetime64[ns] 2017-08-19T10:41:02 ...
>>> 
风力发电机(时间='2017-08-19T10:41:02.0',公差=np.timedelta64(1,'us'))。时间 数组(['2017-08-19T10:41:02.000000000','2017-08-19T10:41:02.031250000', “2017-08-19T10:41:02.062500000”,“2017-08-19T10:41:02.093750000”, “2017-08-19T10:41:02.125000000”、“2017-08-19T10:41:02.15650000”, “2017-08-19T10:41:02.187500000”,“2017-08-19T10:41:02.218750000”, “2017-08-19T10:41:02.250000000”、“2017-08-19T10:41:02.281250000”, “2017-08-19T10:41:02.312500000”,“2017-08-19T10:41:02.343750000”, “2017-08-19T10:41:02.375000000”,“2017-08-19T10:41:02.406250000”, “2017-08-19T10:41:02.437500000”、“2017-08-19T10:41:02.468750000”, “2017-08-19T10:41:02.500000000”、“2017-08-19T10:41:02.531250000”, “2017-08-19T10:41:02.562500000”,“2017-08-19T10:41:02.593750000”, “2017-08-19T10:41:02.62500000”,“2017-08-19T10:41:02.656250000”, “2017-08-19T10:41:02.687500000”、“2017-08-19T10:41:02.718750000”, “2017-08-19T10:41:02.75000000”,“2017-08-19T10:41:02.781250000”, “2017-08-19T10:41:02.812500000”,“2017-08-19T10:41:02.843750000”, “2017-08-19T10:41:02.875000000”,“2017-08-19T10:41:02.906250000”, ‘2017-08-19T10:41:02.937500000’、‘2017-08-19T10:41:02.968750000’、dtype='datetime64[ns].) 协调: *时间日期时间64[ns]2017-08-19T10:41:02。。。 >>> 最终编辑:似乎是关于xarray解码datetime64字符串的方式,也许?这项工作:

>>> wind.W_C.sel(Time = np.datetime64('2017-08-19T10:41:02.000000000')).Time
<xarray.DataArray 'Time' ()>
array(1503139262000000000L, dtype='datetime64[ns]')
Coordinates:
    Time     datetime64[ns] 2017-08-19T10:41:02
>>>
风力发电机组(时间=np.datetime64('2017-08-19T10:41:02.000000000'))。时间 数组(1503139262000000000L,dtype='datetime64[ns]') 协调: 时间日期时间64[ns]2017-08-19T10:41:02 >>>
我认为这是一个上游问题。熊猫确实返回了同样的结果,
wind.W_C.to_Pandas.loc['2017-08-19T10:41:02.0']
给出了32个项目,但
wind.W_C.to_Pandas.loc[np.datetime64('2017-08-19T10:41:02.0')]
给出了一个项目。思考得很好。我在问题上加了一个熊猫标签。