Python pandas:选择列值为null / None / nan的行[重复]

Posted

技术标签:

【中文标题】Python pandas:选择列值为null / None / nan的行[重复]【英文标题】:Python pandas: selecting rows whose column value is null / None / nan [duplicate] 【发布时间】:2017-03-07 19:54:54 【问题描述】:

如何选择 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: []

【问题讨论】:

df[df[2].isnull()] 谢谢。很抱歉被骗了。在搜索中找不到我需要的东西。为什么我不能使用 df[df[2] == None] ?为什么在我使用 fillna(np.nan) 对 NaN 进行编码后,np.nan 与自身不匹配? 你可以找到答案here。而fillna(np.nan) 将用 NaN 替换 NaN ;) 【参考方案1】:

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

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

【讨论】:

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

以上是关于Python pandas:选择列值为null / None / nan的行[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Python散点图设计 - 根据其他列值为x轴选择变量的特定值

如果列值不为 NULL,则 Python pandas 应用函数

Python - Pandas:基于列值的 IF 语句

如果您使用 pandas 数据框知道列值和行值,如何检索数据? [复制]

当该行的一列值为 NULL 时,Spark Dataframe 为整行返回 NULL

MySQL_列值为null对索引的影响_实践