在 pandas 中,如何选择包含 NaN 的行? [复制]
Posted
技术标签:
【中文标题】在 pandas 中,如何选择包含 NaN 的行? [复制]【英文标题】:In pandas, How to select the rows that contains NaN? [duplicate] 【发布时间】:2017-01-22 12:40:47 【问题描述】:假设我在df
中有以下数据框:
a | b | c
------+-------+-------
5 | 2 | 4
NaN | 6 | 8
5 | 9 | 0
3 | 7 | 1
如果我执行df.loc[df['a'] == 5]
,它会正确返回第一行和第三行,但如果我执行df.loc[df['a'] == np.NaN]
,它不会返回任何内容。
我认为这更像是一个 python 的东西而不是 pandas 的东西。如果我将np.nan
与任何东西进行比较,即使np.nan == np.nan
也会评估为False
,所以问题是,我应该如何测试np.nan
?
【问题讨论】:
目标稍微复杂一些,但基本上你使用df['a'].isnull()
或pd.isnull(df['a'])
进行空值检查。之后选择很容易:df[df['a'].isnull()]
您可以使用 numpy.isnan() 为您提供与输入数组形状相同的布尔数组
一般来说,我会避免在 DataFrames 上使用np.isnan
。它不如具有相同功能的pd.isnull
强大。例如,比较当您尝试np.isnan(df['a'])
和pd.isnull(df['a'])
时发生df = pd.DataFrame('a': ['x', np.nan, 'y'])
时发生的情况。
谢谢大家,我同时使用了ìsnull()
和isnan()
并得到了我想要的相同结果。为什么您没有将答案发布为答案?
本教程可能会有所帮助:chartio.com/resources/tutorials/…
【参考方案1】:
尝试像这样使用 isnull:
import pandas as pd
import numpy as np
a=[1,2,3,np.nan,5,6,7]
df = pd.DataFrame(a)
df[df[0].isnull()]
【讨论】:
以上是关于在 pandas 中,如何选择包含 NaN 的行? [复制]的主要内容,如果未能解决你的问题,请参考以下文章