熊猫 ASYPE( "datetime64" ) 不一致,不会提高



我完全不知道如何为此构建一个MWE,因为当我对数据帧进行切片时,这种行为就会发生,参见下面的控制台输出:

第一个切片,最后一行的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]

和id我连接第一部分和最后一部分,因为我认为在id 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

我不得不说我已经用熊猫超过3年了,但在这里我完全迷路了。

编辑

我已经在一个要点中添加了这个系列

这个bug在pandas 1.3.0中可以看到,实际上在pandas 1.3.3中已经修复了

我无法重现您的错误:

In [31]: df = pd.read_csv("date_error.csv")
In [32]: df.iloc[3802:11775].astype({"date": "datetime64"})
Out[32]:
Unnamed: 0       date
3802          258 2014-09-14
3803          259 2018-10-12
3804          259 2018-10-12
3805          259 2018-10-12
3806          259 2018-10-12
...           ...        ...
11770         781 2014-09-14
11771         781 2014-09-14
11772         781 2014-09-14
11773         781 2014-09-14
11774         781 2014-09-14
[7973 rows x 2 columns]
In [33]: df["date"].isna().any()
Out[33]: False

也就是说,我建议使用pd.to_datetime而不是astype()

相关内容

  • 没有找到相关文章

最新更新