📌  相关文章
📜  如何在 Pandas 中删除包含特定字符串的行?(1)

📅  最后修改于: 2023-12-03 15:38:22.358000             🧑  作者: Mango

如何在 Pandas 中删除包含特定字符串的行?

当我们使用 Pandas 处理数据时,有时候需要根据特定条件删除 DataFrame 中的某些行。比如,我们想要删除包含特定字符串的行,该怎么办呢?

下面,我们将介绍 Pandas 中几种常见的方法,帮助你删除 DataFrame 中包含特定字符串的行。

方法一:使用 Pandas 的 str.contains() 方法

我们可以使用 Pandas 的 str.contains() 方法,筛选出包含特定字符串的行,并将其从 DataFrame 中删除。

下面是一个示例代码:

import pandas as pd

# 创建示例 DataFrame
df = pd.DataFrame({
    'name': ['Alice', 'Bob', 'Charlie', 'David'],
    'age': [25, 30, 35, 40],
    'gender': ['F', 'M', 'M', 'M']
})

# 查看示例 DataFrame
print(df)

# 删除包含特定字符串的行
df = df[~df['name'].str.contains('Char')]

# 查看处理后的 DataFrame
print(df)

输出如下:

       name  age gender
0     Alice   25      F
1       Bob   30      M
2   Charlie   35      M
3     David   40      M

      name  age gender
0    Alice   25      F
1      Bob   30      M
3    David   40      M

在上面的代码中,我们首先创建了一个示例 DataFrame。然后,使用 str.contains() 方法,筛选出包含 'Char' 字符串的行,并通过 ~ 符号取其反,即删除这些行。最后,打印处理后的 DataFrame。

需要注意的是,在使用 str.contains() 方法时,我们需要在 DataFrame 中选择一列,并将其传入该方法中。在上面的示例代码中,我们使用 df['name'] 选择了 'name' 列,并将其传入 str.contains() 方法中。

方法二:使用 Pandas 的布尔索引

除了使用 str.contains() 方法之外,我们还可以使用 Pandas 的布尔索引来实现删除包含特定字符串的行的操作。

以下是一个示例代码:

import pandas as pd

# 创建示例 DataFrame
df = pd.DataFrame({
    'name': ['Alice', 'Bob', 'Charlie', 'David'],
    'age': [25, 30, 35, 40],
    'gender': ['F', 'M', 'M', 'M']
})

# 查看示例 DataFrame
print(df)

# 使用布尔索引删除包含特定字符串的行
df = df[~df['name'].str.contains('Char')]

# 查看处理后的 DataFrame
print(df)

输出如下:

       name  age gender
0     Alice   25      F
1       Bob   30      M
2   Charlie   35      M
3     David   40      M

      name  age gender
0    Alice   25      F
1      Bob   30      M
3    David   40      M

在上面的代码中,我们首先创建了一个示例 DataFrame。然后,使用 df['name'].str.contains('Char') 进行布尔判断,判断哪些行包含 'Char' 字符串,将结果赋值给一个布尔数组。然后,使用 ~ 符号取该布尔数组的反,即删除包含 'Char' 字符串的行。最后,打印处理后的 DataFrame。

总结

以上是两种在 Pandas 中删除包含特定字符串的行的方法。使用 str.contains() 方式更加简便,但是需要注意传入正确的列名;而使用布尔索引则更加灵活,但是代码稍微有些繁琐。无论是哪种方法,请根据实际情况选择最为合适的方式。