【问题标题】:Python pandas: selecting rows whose column value is null / None / nan [duplicate]Python pandas:选择列值为null / None / nan的行[重复]
【发布时间】: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 ;)

标签: python pandas


【解决方案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
猜你喜欢
  • 2019-05-31
  • 1970-01-01
  • 2021-10-10
  • 2013-11-30
  • 2021-01-25
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
相关资源
最近更新 更多