无法使用isnull()筛选NaT

2024-04-23 20:14:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧,其中一列有大量的Nat。我正在使用isnull()过滤它们,但它似乎不起作用。我正在尝试将一列中的值为null的所有行筛选到另一个数据帧中。你知道吗

列的数据类型是datetime。你知道吗

main['Last Campaign date']

具有以下输出:

0         08-03-2019
1         08-03-2019
2         08-03-2019
3         08-03-2019
4         08-03-2019
5         08-03-2019
6         08-03-2019
7         08-03-2019
8         08-03-2019
9         08-03-2019
10        08-03-2019
11        08-03-2019
12        08-03-2019
13        08-03-2019
14        08-03-2019
15        08-03-2019
16        08-03-2019
17        08-03-2019
18        08-03-2019
19        08-03-2019
20        08-03-2019
21        08-03-2019
22        08-03-2019
23        08-03-2019
24        08-03-2019
25        08-03-2019
26        08-03-2019
27        08-03-2019
28        08-03-2019
29        08-03-2019
             ...    
172801           NaT
172802           NaT
172803           NaT
172804           NaT
172805           NaT
172806           NaT
172807           NaT
172808           NaT
172809           NaT
172810           NaT
172811           NaT
172812           NaT
172813           NaT
172814           NaT
172815           NaT
172816           NaT
172817           NaT
172818           NaT
172819           NaT
172820           NaT
172821           NaT
172822           NaT
172823           NaT
172824           NaT
172825           NaT
172826           NaT
172827           NaT
172828           NaT
172829           NaT
172830           NaT

但是当我使用下面的代码时,它输出0

len(main[main['Last Campaign date'].isnull()]) 

我试过使用:

main.replace('NaT', np.nan)
len(main[main['Last Campaign date'] == np.nan])

仍然是0。我觉得很奇怪,我觉得这和列的数据类型是datetime有关。你知道吗


Tags: 数据代码datetimedatelenmainnpnan
2条回答

试试main['Last Campaign date'].isna().sum() 如果你只是想数一数。否则,如果您可以使用main.replace(pd.NaT, np.nan)将NaT替换为nan

你可以这样做:

df[pd.to_datetime(df['Last Campaign date']).isna()]

请注意,使用==的相等断言不会产生np.nan所需的结果:

np.nan == np.nan
False

相关问题 更多 >