如何将Pandas NaN转换为NaT

时间:2017-12-06 04:29:42

标签: python python-3.x pandas

我正在尝试将Pandas DataFrame列中的NaN(dtype:float64)值转换为NaT值。

请注意,我有几个具有相同 Order_date 列的DataFrame。一些 Order_date 列的dtypes是float64(用NaN填充),而其他的dtypes是datetime64 [ns](用NaT填充)。

我尝试了以下内容:

df.loc[:,'Order_date'] = df.loc[:,'Order_date'].astype(np.datetime64).fillna(pd.NaT)  

但是,我得到一个错误结果:

TypeError: cannot astype a datatimelike from [datetime64[ns]] to [datetime64].  

这个错误背后的原因是什么?我认为错误是由于某些DataFrame中的几个Order_date列具有NaT值(datetime64 [ns])。 如何才能成功将具有NaN值的Order_date列转换为Pandas中的NaT值,并保留已经具有NaT值的剩余Order_date列?

2 个答案:

答案 0 :(得分:0)

我可能误解了问题的要求,但不会

df['Order_date'].fillna(pd.NaT, inplace=True)

做这个工作?

答案 1 :(得分:0)

使用pd.to_datetime()怎么样?像这样:

pd.to_datetime(df.loc[:,'Order_date'])

应该返回pd.NaT而不是np.NaN