Numpy datetime64[D]数组转Polars日期序列的问题及解决办法
更新说明: pl.Series(datetime_array) 现在可按预期生成date类型。
将Numpy datetime数组转换为Polars Series时会变成object类型,但数值或字符串数组转换为pl.Series时能保持正确格式。这是使用有误还是存在bug?
输入:
datetime_array = np.array(['2022-02-11', '2022-02-11', '2022-02-11','2022-02-10','2022-02-11', '2022-02-11'], dtype='datetime64[D]')
输出:
array(['2022-02-11', '2022-02-11', '2022-02-11', '2022-02-10', '2022-02-11', '2022-02-11'], dtype='datetime64[D]')
转换为序列:
输入:
pl.Series(datetime_array)
输出:
shape: (6,) Series: '' [o][object] [ 2022-02-11 2022-02-11 2022-02-11 2022-02-10 2022-02-11 2022-02-11 ]
若尝试指定序列的dtype为pl.Date,会抛出如下异常:
输入:
pl.Series(datetime_array, dtype=pl.Date)
输出:
InvalidOperationError: cannot cast array of type ObjectChunked to arrow datatype
解决方法
先将Numpy datetime数组转换为字符串类型,再转换为Polars序列,之后使用Polars的.str.to_date()方法转换为date类型。
输入:
pl.Series(np.datetime_as_string(datetime_array)).str.to_date()
输出:
shape: (6,) Series: '' [date] [ 2022-02-11 2022-02-11 2022-02-11 2022-02-10 2022-02-11 2022-02-11 ]
内容的提问来源于stack exchange,提问作者miroslaavi
相关产品推荐
相关产品推荐

