Python pandas:选择列值为null / None / nan的行
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: []
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。这样就可以轻松地选择出所需的行。