📅  最后修改于: 2023-12-03 15:38:22.358000             🧑  作者: Mango
当我们使用 Pandas 处理数据时,有时候需要根据特定条件删除 DataFrame 中的某些行。比如,我们想要删除包含特定字符串的行,该怎么办呢?
下面,我们将介绍 Pandas 中几种常见的方法,帮助你删除 DataFrame 中包含特定字符串的行。
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()
方法中。
除了使用 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()
方式更加简便,但是需要注意传入正确的列名;而使用布尔索引则更加灵活,但是代码稍微有些繁琐。无论是哪种方法,请根据实际情况选择最为合适的方式。