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

23 浏览
0 Comments

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

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

0
0 Comments

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

在使用Python的pandas库进行数据处理时,经常会遇到需要选择列值为null / None / nan的行的情况。本文将介绍出现这个问题的原因以及解决方法。

问题原因:

在pandas中,无法使用等于运算符(==)来判断某列的值是否为null / None / nan。因为在Python中,比较两个nan的结果始终为False。所以以下代码是不起作用的:

df.loc[(df['2'] == nan) & (df['2'] == None)]

解决方法:

要选择列值为null / None / nan的行,可以使用pandas的isna()方法。该方法返回一个布尔值的Series,指示每个元素是否为null / None / nan。以下是使用isna()方法来选择列值为null / None / nan的行的示例代码:

df[df[2].isna()]

运行以上代码,将选择出列2中值为null / None / nan的行:

   0  1   2
1  3  4 NaN

在使用Python pandas处理数据时,选择列值为null / None / nan的行是一个常见的需求。为了解决这个问题,我们可以使用pandas的isna()方法来判断每个元素是否为null / None / nan。这样就可以轻松地选择出所需的行。

0