pandas使用astype("datetime64")转换日期结果不一致且未抛错问题
我完全不知道如何构建该问题的最小可复现示例(MWE),因为该异常行为仅在对DataFrame进行切片时出现,控制台输出如下:
第一次切片时,末尾行返回NaT:
In [161]: df.iloc[3802:11775].astype({"date": "datetime64"})[["date"]] Out[161]: date 258 2014-09-14 259 2018-10-12 259 2018-10-12 259 2018-10-12 259 2018-10-12 .. ... 781 NaT 781 NaT 781 NaT 781 NaT 781 NaT [7973 rows x 1 columns]
若将切片起始位置调整为3803,转换结果正常:
In [162]: df.iloc[3803:11775].astype({"date": "datetime64"})[["date"]] Out[162]: date 259 2018-10-12 259 2018-10-12 259 2018-10-12 259 2018-10-12 259 2018-10-12 .. ... 781 2014-09-14 781 2014-09-14 781 2014-09-14 781 2014-09-14 781 2014-09-14 [7972 rows x 1 columns]
我怀疑是索引3802行存在异常,因此将首尾片段拼接后再转换,结果仍然正常:
In [165]: pd.concat([df.iloc[3800:3803], df.iloc[11770:11775]]).astype({"date": "datetime64"})[["date"]] Out[165]: date 258 2014-09-14 258 2014-09-14 258 2014-09-14 781 2014-09-14 781 2014-09-14 781 2014-09-14 781 2014-09-14 781 2014-09-14
我已经使用pandas超过3年,完全无法解释该异常现象。
编辑补充
我已将对应Series上传至公开代码片段平台,该bug可在安装pandas 1.3.0版本的在线协作环境中复现,且该问题在pandas 1.3.3版本中已修复。
内容的提问来源于stack exchange,提问作者ClementWalter
相关产品推荐
相关产品推荐

