我有一个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
Run Code Online (Sandbox Code Playgroud)
提取前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]')
Run Code Online (Sandbox Code Playgroud)
我希望我的日期时间的格式只是 等'1979-01-01','1979-01-02'没有时间,或者将时间标准化为 00:00:00。
pandas 数据框架有一些解决方案,但我不太确定如何在这里应用它们,因为这些函数不适用(在 datetime、Timestamp 和 datetime64 之间转换,使用 pandas.to_datetime 时仅保留日期部分)
有几种方法可以做到这一点。我经常使用的快速而肮脏的方法是使用重新采样:
da.resample(time='1D').first()
Run Code Online (Sandbox Code Playgroud)
更强大的方法是直接修改时间索引:
da['time'] = da.indexes['time'].normalize()
Run Code Online (Sandbox Code Playgroud)
最后,这通常可以通过创建新的日期时间索引来完成:
da['time'] = pd.date_range(da['time'][0], periods=len(da['time']), freq='1D')
Run Code Online (Sandbox Code Playgroud)
请注意,第二个和第三个示例在计算上比第一个示例更便宜,但确实需要直接使用底层 Pandas 索引。
| 归档时间: |
|
| 查看次数: |
5866 次 |
| 最近记录: |