gpt4 book ai didi

pandas - 在Pandas数据框中使用NaT替换日期

转载 作者:行者123 更新时间:2023-12-04 11:24:05 24 4
gpt4 key购买 nike

我有一个datetime64类型的列的数据框。在此列中,有几行的日期为1999-09-09 23:59:59,因此实际上应该将它们表示为缺失日期NaT。有人刚决定使用这个特定的日期来表示丢失的数据。现在,我希望将这些日期替换为NaT(Pandas缺少的日期类型)。

另外,如果我使用NaT在此列上执行操作,例如

df['date'] - df['column with missing date']

Pandas 会忽略丢失的日期并为这些行保留NaT还是会抛出错误,例如Java中的Null指针异常。

最佳答案

In [6]:
import pandas as pd
df = pd.DataFrame({'date':[pd.datetime(1999,9,9,23,59,59), pd.datetime(2014,1,1)]* 10})
df
Out[6]:
date
0 1999-09-09 23:59:59
1 2014-01-01 00:00:00
2 1999-09-09 23:59:59
3 2014-01-01 00:00:00
4 1999-09-09 23:59:59
5 2014-01-01 00:00:00
6 1999-09-09 23:59:59
7 2014-01-01 00:00:00
8 1999-09-09 23:59:59
9 2014-01-01 00:00:00
10 1999-09-09 23:59:59
11 2014-01-01 00:00:00
12 1999-09-09 23:59:59
13 2014-01-01 00:00:00
14 1999-09-09 23:59:59
15 2014-01-01 00:00:00
16 1999-09-09 23:59:59
17 2014-01-01 00:00:00
18 1999-09-09 23:59:59
19 2014-01-01 00:00:00
In [9]:

import numpy as np
df.loc[df['date'] == '1999-09-09 23:59:59 ', 'date'] = pd.NaT
df
Out[9]:
date
0 NaT
1 2014-01-01
2 NaT
3 2014-01-01
4 NaT
5 2014-01-01
6 NaT
7 2014-01-01
8 NaT
9 2014-01-01
10 NaT
11 2014-01-01
12 NaT
13 2014-01-01
14 NaT
15 2014-01-01
16 NaT
17 2014-01-01
18 NaT
19 2014-01-01

要回答您的第二个问题,大多数 Pandas 函数都可以正确处理NaN,您可以随时将其删除:
In [10]:

df.dropna()
Out[10]:
date
1 2014-01-01
3 2014-01-01
5 2014-01-01
7 2014-01-01
9 2014-01-01
11 2014-01-01
13 2014-01-01
15 2014-01-01
17 2014-01-01
19 2014-01-01

并在这些行上执行操作

关于pandas - 在Pandas数据框中使用NaT替换日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24803824/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com