Python xarray xarray/datetime64[ns]:从datetime中删除或标准化时间

Python xarray xarray/datetime64[ns]:从datetime中删除或标准化时间,python-xarray,Python Xarray,我有一个带有坐标“time”的数据数组arr。 arr: <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 我希望我的日期

我有一个带有坐标“time”的数据数组
arr
arr

    <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
我希望我的日期时间格式仅为
'1979-01-01'
'1979-01-02'
等,不含时间,或者将时间标准化为00:00:00


熊猫数据帧有一些解决方案,但我不太确定如何在这里应用它们,因为函数不适用(,)

有几种方法可以做到这一点。我经常使用的快速而肮脏的方法是使用重采样:

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')

请注意,第二个和第三个示例在计算上要比第一个示例便宜,但确实需要直接使用下面的熊猫索引。

非常感谢-这是一种简洁直接的方法,因为它不需要首先转换为数据帧等,
arr['time']=arr.indexes['time'].normalize()
arr
是一个xarray数据数组的地方工作得很好。您给出的第二个和第三个示例之间有什么区别?在本例中,我的第二个和第三个示例基本上是相同的操作。第三个更具可扩展性,因为您可以使用它替换任何现有的时间索引。
da['time'] = pd.date_range(da['time'][0], periods=len(da['time']), freq='1D')