如何使用“不为空”?在 pandas 中(带有示例)
您可以使用 pandas notnull()函数来测试 pandas DataFrame 的元素是否为 null。
如果某个元素等于 NaN 或 None,则该函数将返回False 。
否则,该函数将返回True 。
以下是在实际中使用该功能的几种常见方法:
方法一:过滤任意列中没有空值的行
df[df. notnull (). all ( 1 )]
方法2:过滤特定列中没有空值的行
df[df[[' this_column ']]. notnull (). all ( 1 )]
方法三:统计每列非零值的个数
df. notnull (). sum ()
方法四:统计整个DataFrame中非零值的个数
df. notnull (). sum (). sum ()
以下示例展示了如何在实践中使用以下 pandas DataFrame 的每种方法:
import pandas as pd import numpy as np #createDataFrame df = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'], ' points ': [18, 22, 19, 14, 14, 11, 20, np.nan], ' assists ': [5, np.nan, 7, 9, 12, 9, 9, np.nan], ' rebounds ': [11, 8, 10, 6, 6, 5, np.nan, 12]}) #view DataFrame print (df) team points assists rebounds 0 A 18.0 5.0 11.0 1 B 22.0 NaN 8.0 2 C 19.0 7.0 10.0 3D 14.0 9.0 6.0 4 E 14.0 12.0 6.0 5 F 11.0 9.0 5.0 6G 20.0 9.0 NaN 7 H NaN NaN 12.0
示例1:过滤任意列中没有空值的行
下面的代码展示了如何过滤DataFrame以仅显示任何列中没有空值的行:
#filter for rows with no null values in any column
df[df. notnull (). all ( 1 )]
team points assists rebounds
0 A 18.0 5.0 11.0
2 C 19.0 7.0 10.0
3D 14.0 9.0 6.0
4 E 14.0 12.0 6.0
5 F 11.0 9.0 5.0
请注意,此过滤后的 DataFrame 中的每一行在任何列中都没有空值。
示例2:过滤特定列中没有空值的行
以下代码展示了如何过滤DataFrame以仅显示辅助列中没有空值的行:
#filter for rows with no null values in the 'assists' column
df[df[[' assists ']]. notnull (). all ( 1 )]
team points assists rebounds
0 A 18.0 5.0 11.0
2 C 19.0 7.0 10.0
3D 14.0 9.0 6.0
4 E 14.0 12.0 6.0
5 F 11.0 9.0 5.0
6G 20.0 9.0 NaN
请注意,此过滤后的 DataFrame 中的每一行在Helper列中都没有空值。
示例3:统计每列中非零值的数量
下面的代码展示了如何计算DataFrame每一列中非零值的数量:
#count number of non-null values in each column
df. notnull (). sum ()
team 8
points 7
assists 6
rebounds 7
dtype: int64
从结果我们可以看出:
- team列有 8 个非零值。
- 点列有 7 个非零值。
- 助攻列有 6 个非零值。
- 退回数列有 7 个非零值。
示例4:统计整个DataFrame中非零值的数量
下面的代码展示了如何统计整个DataFrame中非零值的数量:
#count number of non-null values in entire DataFrame
df. notnull (). sum (). sum ()
28
从输出中我们可以看到整个DataFrame中有28个非零值。
其他资源
以下教程解释了如何在 pandas 中执行其他常见的过滤操作:
如何按列值过滤 Pandas DataFrame
如何在 Pandas 中过滤“不包含”
如何根据多个条件过滤 Pandas DataFrame