如何分别填充 NaT 和 NaN 值

Bia*_*rys 6 python datetime nan pandas

我的数据框包含 NaT 和 NaN 值

    Date/Time_entry      Entry      Date/Time_exit       Exit   
0   2015-11-11 10:52:00  19.9900    2015-11-11 11:30:00  20.350 
1   2015-11-11 11:36:00  20.4300    2015-11-11 11:38:00  20.565 
2   2015-11-11 11:44:00  21.0000    NaT                  NaN        
3   2009-04-20 10:28:00  13.7788    2009-04-20 10:46:00  13.700
Run Code Online (Sandbox Code Playgroud)

我想用日期填充 NaT,用数字填充 NaN。Fillna(4) 方法将 NaT 和 NaN 替换为 4。是否有可能以某种方式区分 NaT 和 NaN?

我目前的解决方法是 df[column].fillna()

cs9*_*s95 12

由于 NaT 与日期时间列有关,因此您可以在应用填充操作时排除它们。

u = df.select_dtypes(exclude=['datetime'])
df[u.columns] = u.fillna(4)
df

      Date/Time_entry    Entry      Date/Time_exit    Exit
0 2015-11-11 10:52:00  19.9900 2015-11-11 11:30:00  20.350
1 2015-11-11 11:36:00  20.4300 2015-11-11 11:38:00  20.565
2 2015-11-11 11:44:00  21.0000                 NaT   4.000
3 2009-04-20 10:28:00  13.7788 2009-04-20 10:46:00  13.700
Run Code Online (Sandbox Code Playgroud)

同样,要仅填充 NaT 值,请将上面代码中的“排除”更改为“包含”。

u = df.select_dtypes(include=['datetime'])
df[u.columns] = u.fillna(pd.to_datetime('today'))
df

      Date/Time_entry    Entry             Date/Time_exit    Exit
0 2015-11-11 10:52:00  19.9900 2015-11-11 11:30:00.000000  20.350
1 2015-11-11 11:36:00  20.4300 2015-11-11 11:38:00.000000  20.565
2 2015-11-11 11:44:00  21.0000 2019-02-17 16:11:09.407466   4.000
3 2009-04-20 10:28:00  13.7788 2009-04-20 10:46:00.000000  13.700
Run Code Online (Sandbox Code Playgroud)

  • 惊人的!我不知道有 select_dtypes() 函数 (3认同)