如何在 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值

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注