xarray / datetime64 [ns]:从datetime移除或规范化时间

时间:2019-02-12 15:29:58

标签: python-xarray

我有一个坐标为“时间”的数据数组arrarr

    <xarray.DataArray 'T' (time: 731)>
array([244.40161, 244.39998, ..., 244.40936, 244.40549], dtype=float32)
Coordinates:
  * time         (time) datetime64[ns] 1979-01-01T09:00:00 ... 1980-12-31T09:00:00

提取前5个时间坐标arr.time.values[:5]

array(['1979-01-01T09:00:00.000000000', '1979-01-02T09:00:00.000000000',
       '1979-01-03T09:00:00.000000000', '1979-01-04T09:00:00.000000000',
       '1979-01-05T09:00:00.000000000'], dtype='datetime64[ns]')

我希望我的日期时间格式为'1979-01-01''1979-01-02'等,而没有时间,或者将时间标准化为00:00:00。

对于熊猫数据框,有一些解决方案,但由于功能不适用(Converting between datetime, Timestamp and datetime64Keep only date part when using pandas.to_datetime),我不太确定如何在此处应用它们

1 个答案:

答案 0 :(得分:1)

有几种方法可以执行此操作。我经常使用的快速而肮脏的方法是使用重采样:

da.resample(time='1D').first()

更健壮的方法是直接修改时间索引:

da['time'] = da.indexes['time'].normalize()

最后,通常可以通过创建新的日期时间索引来完成此操作:

da['time'] = pd.date_range(da['time'][0], periods=len(da['time']), freq='1D')

请注意,第二个和第三个示例在计算上将比第一个便宜,但确实需要直接使用基础Pandas索引。