如何将xarray.DataArray中的日期时间字符串转为datetime对象?
解决xarray.DataArray字节型日期字符串转datetime64的问题
问题原因
直接使用da.astype('datetime64')失败,是因为numpy无法直接解析带Z后缀的字节格式日期字符串,必须先将字节串转换为普通字符串再处理。
解决方案步骤
解码字节串为普通字符串
使用xarray的字符串方法str.decode('utf-8')将字节型字符串转换为UTF-8编码的普通字符串:da_str = da.str.decode('utf-8')转换为datetime64类型
用xarray内置的xr.to_datetime()方法直接转换,该方法支持识别带Z(UTC标识)的ISO格式日期:import xarray as xr da_datetime = xr.to_datetime(da_str)也可以借助pandas的
pd.to_datetime()实现相同效果:import pandas as pd da_datetime = xr.DataArray(pd.to_datetime(da_str))
完整示例代码
import xarray as xr # 示例DataArray da = xr.DataArray([b'2018-07-31T20:13:22.084Z', b'2018-07-31T20:13:22.599Z']) # 解码并转换 da_str = da.str.decode('utf-8') da_datetime = xr.to_datetime(da_str) print(da_datetime)
输出结果会是带UTC时区的datetime64类型数组:
<xarray.DataArray (dim_0: 2)> array(['2018-07-31T20:13:22.084000000', '2018-07-31T20:13:22.599000000'], dtype='datetime64[ns]')
内容的提问来源于stack exchange,提问作者DZN
相关产品推荐
相关产品推荐

