pandas如何删掉dataframe内的nan空值行

pandas如何删掉dataframe内的nan空值行

pandas如何删掉dataframe内的nan空值行

在数据分析和处理中,经常会遇到数据表中包含空值(NaN)的情况,如果不处理这些空值,会影响到数据分析的准确性和结果。在 pandas 中,可以使用 dropna() 方法来删除包含空值的行。

下面将详细介绍如何使用 pandas 删除 dataframe 内的 NaN 空值行。

创建包含空值的 dataframe

首先,让我们创建一个包含空值的 dataframe,以便后续演示如何删除这些空值行。我们使用 pandas 的 DataFrame() 方法来创建一个包含 NaN 空值的数据表。

import pandas as pd
import numpy as np

data = {
    'A': [1, 2, np.nan, 4],
    'B': [np.nan, 5, 6, np.nan],
    'C': [7, np.nan, 9, 10]
}

df = pd.DataFrame(data)
print(df)

运行以上代码,我们可以得到以下包含空值的 dataframe:

     A    B     C
0  1.0  NaN   7.0
1  2.0  5.0   NaN
2  NaN  6.0   9.0
3  4.0  NaN  10.0

删除包含空值的行

接下来,我们使用 dropna() 方法删除包含空值的行。默认情况下,dropna() 方法会删除所有包含空值的行(即任何字段包含 NaN 的行)。

df.dropna(inplace=True)
print(df)

运行以上代码,我们可以看到删除包含空值的行后的 dataframe:

     A    B     C

可以看到,原先包含空值的行已经被删除了。

指定删除空值的条件

除了默认删除所有包含空值的行外,我们还可以根据需求指定删除空值的条件。dropna() 方法提供了一些参数来帮助我们做出这样的设定。

首先,我们可以使用 how 参数来指定删除的条件,可选的值有 ‘any’ 和 ‘all’。’any’ 表示只要有一个字段包含空值就删除该行,’all’ 表示所有字段都包含空值才删除。

df.dropna(how='any', inplace=True)
print(df)

运行上述代码,我们可以得到与默认情况下相同的结果。因为默认情况下 how 参数即为 ‘any’。

接着,我们通过设置 thresh 参数来指定行内非空值的最少数量。只有行内非空值数量少于该阈值时,才会被删除。

df = pd.DataFrame(data)
df.dropna(thresh=2, inplace=True)
print(df)

上述代码中,我们设定 thresh=2,即只有至少有2个非空值的行才会被保留。运行后,结果如下:

     A    B     C
0  1.0  NaN   7.0
1  2.0  5.0   NaN
2  NaN  6.0   9.0
3  4.0  NaN  10.0

可以看到,在该示例中,没有行符合 thresh=2 的条件,因此没有行被删除。

最后,我们可以通过 subset 参数来指定在哪些列中查找空值并删除相应的行。

df.dropna(subset=['A', 'B'], inplace=True)
print(df)

在上述代码中,我们指定只在 ‘A’ 列和 ‘B’ 列中查找空值并删除相应的行。运行后,结果如下:

     A    B    C
1  2.0  5.0  NaN

可以看到,只有包含 ‘A’ 列或 ‘B’ 列中有空值的行被删除了。

总结

本文详细介绍了如何使用 pandas 删除 dataframe 内的 NaN 空值行。通过 dropna() 方法,我们可以方便地删除包含空值的行,并且可以根据需要指定删除的条件,使数据处理更加灵活和准确。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程