从Pandas DataFrame中删除一系列行

从Pandas DataFrame中删除一系列行

在数据处理中,我们常常需要从 DataFrame 中删除一些不需要的行,这些行可能是由于数据重复、有误或不可用而需要删除的。在 Pandas 中,我们可以使用 drop() 方法来删除行,但是需要指定删除哪些行,本篇文章将介绍几种不同的方法来删除一系列行。

更多Pandas相关文章,请阅读:Pandas 教程

删除连续的行

如果需要删除一连串的连续行,可以使用 drop() 方法,并传递一个范围,即可删除这些行。如下面的示例,我们需要删除 2-4 行的数据:

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
        'age': [25, 30, 35, 40, 45],
        'gender': ['F', 'M', 'M', 'M', 'F']}

df = pd.DataFrame(data)

df.drop(index=range(2, 5), inplace=True)

print(df)

输出结果如下:

      name  age gender
0    Alice   25      F
1      Bob   30      M
4      Eva   45      F

在这里,drop() 方法中传递了一个范围 range(2, 5),表示需要删除 2-4 行的数据。inplace=True 表示需要对原 DataFrame 进行修改。

删除不连续的行

如果需要删除不连续的行,我们可以使用布尔索引的方式来实现。比如在下面的示例中,需要删除 name 列中等于 'Bob''David' 的所有行:

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
        'age': [25, 30, 35, 40, 45],
        'gender': ['F', 'M', 'M', 'M', 'F']}

df = pd.DataFrame(data)

df = df.loc[(df['name'] != 'Bob') & (df['name'] != 'David')]

print(df)

输出结果如下:

      name  age gender
0    Alice   25      F
2  Charlie   35      M
4      Eva   45      F

在这里,df.loc[] 中传递了一个布尔值的判断条件,表示需要删除 name 列中等于 'Bob''David' 的所有行。

删除包含某些特征的行

或许有时候我们不知道需要删除哪些行,但是知道这些行包含了某些特征。在这种情况下,我们可以使用 Pandas 的 str.contains() 方法,它可以在 DataFrame 中搜索包含特定字符串的行。在下面的示例中,我们需要删除 name 列中包含 'l''v' 的所有行:

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
        'age': [25, 30, 35, 40, 45],
        'gender': ['F', 'M', 'M', 'M', 'F']}

df = pd.DataFrame(data)

df = df[~df['name'].str.contains('l|v')]

print(df)

输出结果如下:

    name  age gender
1    Bob   30      M
3  David   40      M

在这里,我们使用了 ~df['name'].str.contains('l|v'),表示删除包含 'l''v' 的行。

删除空行

有时候 DataFrame 中会有一些空行,这些行不包含任何值。在 Pandas 中,空值用 NaN 表示。如果需要删除空行,可以使用 dropna() 方法,并传递 how='all' 参数。在下面的示例中,我们需要删除数据集中的空行:

import pandas as pd
import numpy as np

data = {'name':['Alice', 'Bob', 'Charlie', np.nan, 'Eva'],
        'age': [25, 30, 35, np.nan, 45],
        'gender': ['F', np.nan, 'M', 'M', 'F']}

df = pd.DataFrame(data)

df.dropna(how='all', inplace=True)

print(df)

输出结果如下:

      name   age gender
0    Alice  25.0      F
1      Bob  30.0    NaN
2  Charlie  35.0      M
4      Eva  45.0      F

在这里,dropna(how='all') 表示删除所有值都为空的行,inplace=True 表示需要对原 DataFrame 进行修改。

结论

在 Pandas 中,我们可以使用 drop() 方法和布尔索引的方式来删除 DataFrame 中不需要的行,可以使用 str.contain() 方法来删除包含某些特征的行。如果需要删除空行,可以使用 dropna() 方法,并传递 how='all' 参数。有了以上这些方法,我们可以很方便地从 DataFrame 中删除一系列行。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

Pandas 教程