Python pandas:选择列值为null / None / nan的行

42

如何选择DataFrame中某一列值为None的行?

我已将其编码为np.nan,无法匹配这种类型。

In [1]: import numpy as np

In [2]: import pandas as pd

In [3]: df = pd.DataFrame([[1, 2, 3], [3, 4, None]])

In [4]: df
Out[4]: 
   0  1    2
0  1  2  3.0
1  3  4  NaN

In [5]: df = df.fillna(np.nan)

In [6]: df
Out[6]: 
   0  1    2
0  1  2  3.0
1  3  4  NaN

In [7]: df.iloc[1][2]
Out[7]: nan

In [8]: df.iloc[1][2] == np.nan
Out[8]: False

In [9]: df[df[2] == None]
Out[9]: 
Empty DataFrame
Columns: [0, 1, 2]
Index: []

7
筛选出DataFrame中第3列为空的行。 - MaxU - stand with Ukraine
谢谢。对不起,重复了。在搜索中没有找到我需要的东西。为什么我不能使用 df[df[2] == None]?为什么在使用 fillna(np.nan) 编码 NaN 后,np.nan 不能与自身匹配? - zadrozny
1
你可以在这里找到答案:https://dev59.com/j2kw5IYBdhLWcg3wPYIP。而 fillna(np.nan) 将会用 NaN 替换 NaN ;) - MaxU - stand with Ukraine
1个回答

73

您可以使用.isna()方法:

In [48]: df[df[2].isna()]
Out[48]:
   0  1   2
1  3  4 NaN

你知道为什么 df.loc[(df['2'] == nan) & (df['2'] == None)] 不起作用吗? - ah bon
3
@ahbon,试试这个:np.nan == np.nan - MaxU - stand with Ukraine

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