首页 > 解决方案 > 将 Pandas 数据框中的所有 NaT 值更改为 Timedelta 00:00:00

问题描述

我在 Pandas 中有一个数据框,其中一列“timeOff”有一些 NaT 值。

我要做的就是将所有 NaT 值更改为 timeDelta 值,并以 '00:00:00' 作为值。

这是我当前的输出:

带有 NaT 值的输出

我试图运行这行代码:

replaceNaT = pd.to_timedelta('00:00:00')
print(replaceNaT)

startEndEventsDataframe['timeOff'] = np.where(pd.isnull(startEndEventsDataframe['timeOff']) == True, replaceNaT, startEndEventsDataframe['timeOff'])

但这会破坏我的数据框列中的所有值,如下所示:

从上面运行代码后

我希望所有不是 NaT 的值都保持不变,并且我希望所有 NaT 的值都是 timeDelta,值为“00:00:00”。

谢谢您的帮助。

标签: pythonpandasnat

解决方案


所以,事实证明我是自己想出来的,但我想我会把解决方案发布给将来可能需要知道的任何人。

我去掉了“replaceNaT”,只是在找到 NaT 的地方写了“0”。我猜 timeDeltas 根据它们测量的最低时间分辨率存储为整数,并且仅在显示时转换为它们的样子?

无论如何,这是对我有用的代码更改:

startEndEventsDataframe['timeOff'] = np.where(pd.isnull(startEndEventsDataframe['timeOff']) == True, 0, startEndEventsDataframe['timeOff'])

推荐阅读