从Pandas数据框中删除NaT值

19

我有一个数据框,看起来像下面展示的那样

                               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

有什么想法吗?


3
dropna() 对这个不起作用吗? - EdChum
1
很遗憾,不行。 - sparrow
2个回答

25

pandas.notnull()接收一个系列并返回一个布尔系列,其中输入系列不为null(None,np.NaN,np.NaT)的值为True。然后您可以通过布尔系列来切片数据框:

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

你如何同时检查2列,例如df['mean', 'score'] - tumultous_rooster
1
根据你的需求而定: df['mean','score'].isnull().any(axis=1) 或者 df['mean','score'].isnull().all(axis=1) - exp1orer
在最近的版本中,最好使用以下方式进行切片操作:df.loc[df.mean.notnull()] - Elias

2
在Pandas 1.4.1中,dropna将删除NaT值。来源:文档,我正在使用它。所以现在只需要这么简单:
df = df.dropna()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接