从pandas DataFrame中去除NaT值

19 投票
2 回答
34962 浏览
提问于 2025-04-18 11:57

我有一个数据表,长得像下面这样:

                               mean
comp_name  date                      
Appdynamics 2012-05-01 00:18:15.910000
            2012-05-01             NaT
            2012-05-01             NaT
            2012-05-02 00:20:12.145200
            2012-05-02             NaT
            2012-05-02             NaT

在这里,comp_name和date组成了一个多重索引。我想去掉那些NaT(缺失时间)值,只保留那些平均值(timedelta64)不是NaT的行。

                               mean
comp_name  date                      
Appdynamics 2012-05-01 00:18:15.910000
            2012-05-02 00:20:12.145200

有什么好主意吗?

2 个回答

2

在Pandas 1.4.1版本中,dropna这个功能可以去掉NaT值。来源可以查看这个链接:文档,我正在使用这个功能。所以现在使用起来非常简单。

df = df.dropna()
25

pandas.notnull() 是一个函数,它会检查你给它的一个数据序列,返回一个布尔值序列。这个布尔值序列会标记出哪些地方是有效的,也就是说,哪些地方不是空值(比如 None、np.NaN 或 np.NaT)。然后你可以用这个布尔值序列来筛选数据框中的内容:

df[pandas.notnull(df['mean'])]

撰写回答