如何在 pandas 中选择没有 nan 值的行
您可以使用以下方法来选择 pandas 中没有 NaN 值的行:
方法一:选择所有列中没有NaN值的行
df[~df. isnull (). any (axis= 1 )]
方法2:选择特定列中没有NaN值的行
df[~df[' this_column ']. isna ()]
以下示例展示了如何在实践中使用以下 pandas DataFrame 的每种方法:
import pandas as pd import numpy as np #createDataFrame df = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E', 'F', 'G'], ' points ': [np.nan, 12, 15, 25, np.nan, 22, 30], ' assists ': [4, np.nan, 5, 9, 12, 14, 10]}) #view DataFrame print (df) team points assists 0 A NaN 4.0 1 B 12.0 NaN 2C 15.0 5.0 3D 25.0 9.0 4 E NaN 12.0 5F 22.0 14.0 6G 30.0 10.0
示例1:选择所有列中没有NaN值的行
我们可以使用以下语法来选择DataFrame的每一列中没有NaN值的行:
#create new DataFrame that only contains rows without NaNs no_nans = df[~df. isnull (). any (axis= 1 )] #view results print (no_nans) team points assists 2C 15.0 5.0 3D 25.0 9.0 5F 22.0 14.0 6G 30.0 10.0
请注意,生成的 DataFrame 的每一行在任何列中都不包含任何 NaN 值。
示例2:选择特定列中没有NaN值的行
我们可以使用以下语法来选择DataFrame的points列中没有NaN值的行:
#create new DataFrame that only contains rows without NaNs in points column no_points_nans = df[~df[' points ']. isna ()] #view results print (no_points_nans) team points assists 1 B 12.0 NaN 2C 15.0 5.0 3D 25.0 9.0 5F 22.0 14.0 6G 30.0 10.0
请注意,生成的 DataFrame 的每一行的点列中不包含 NaN 值。
Assists列中有一行具有 NaN 值,但该行保留在 DataFrame 中,因为该行的Points列中的值不是 NaN。
其他资源
以下教程解释了如何在 pandas 中执行其他常见任务:
Pandas:如何删除具有 NaN 值的行
Pandas:如何用字符串替换 NaN 值
Pandas:如何用平均值填充NaN值