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

📅  最后修改于: 2022-05-13 01:54:31.637000             🧑  作者: Mango

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

在本文中,我们将了解如何在 pandas 中删除包含特定字符串的行。现在,要删除带有特定字符串的行,我们可以使用 pandas 库中的 contains()函数。

基本上,此函数将在给定列中搜索字符串并返回相应的行。为此,我们需要通过使用此函数过滤数据框来创建一个新的数据框。

示例:创建数据框

Python3
# Importing the library
import pandas as pd
  
# Dataframe
df = pd.DataFrame({'team': ['Team 1', 'Team 1', 'Team 2',
                            'Team 3', 'Team 2', 'Team 3'],
                   'Subject': ['Math', 'Science', 'Science',
                               'Math', 'Science', 'Math'],
                   'points': [10, 8, 10, 6, 6, 5]})
  
# display
df


Python3
# importing the library
import pandas as pd
  
# Dataframe
df = pd.DataFrame({'team': ['Team 1', 'Team 1', 'Team 2',
                            'Team 3', 'Team 2', 'Team 3'],
                   'Subject': ['Math', 'Science', 'Science', 
                               'Math', 'Science', 'Math'],
                   'points': [10, 8, 10, 6, 6, 5]})
  
# Dropping the team 1
df = df[df["team"].str.contains("Team 1") == False]
  
df


Python3
# importing the library
import pandas as pd
  
# Dataframe
df = pd.DataFrame({'team': ['Team 1', 'Team 1', 'Team 2', 
                            'Team 3', 'Team 2', 'Team 3'],
                   'Subject': ['Math', 'Science', 'Science', 
                               'Math', 'Science', 'Math'],
                   'points': [10, 8, 10, 6, 6, 5]})
  
# Dropping the rows of team 1 and team 2
df = df[df["team"].str.contains("Team 1|Team 2") == False]
  
# display
df


Python3
# importing the library
import pandas as pd
  
# Dataframe
df = pd.DataFrame({'team': ['Team 1', 'Team 1', 'Team 2', 
                            'Team 3', 'Team 2', 'Team 3'],
                   'Subject': ['Math', 'Science', 'Science',
                               'Math', 'Science', 'Math'],
                   'points': [10, 8, 10, 6, 6, 5]})
  
# Dropping the rows with "Sci"
# identify partial string
discard = ["Sci"]
  
# drop rows that contain the partial string "Sci"
df[~df.Subject.str.contains('|'.join(discard))]
  
#display
df


输出

方法 1:删除包含特定字符串的行

在此方法中,我们将使用 str.contains()函数查找行,该函数基本上将从系列中获取字符串并检查给定字符串的匹配,并使用布尔值选择行并将它们设置为False 将帮助我们忽略选定的行并保留剩余的行。

示例

在下面的示例中,我们将选择除“Team 1”之外的所有团队。

Python3

# importing the library
import pandas as pd
  
# Dataframe
df = pd.DataFrame({'team': ['Team 1', 'Team 1', 'Team 2',
                            'Team 3', 'Team 2', 'Team 3'],
                   'Subject': ['Math', 'Science', 'Science', 
                               'Math', 'Science', 'Math'],
                   'points': [10, 8, 10, 6, 6, 5]})
  
# Dropping the team 1
df = df[df["team"].str.contains("Team 1") == False]
  
df

输出

方法 2:删除包含多个字符串的行

与方法 1 相同,我们在此处遵循相同的步骤,但使用按位或运算符添加额外的字符串进行搜索。

示例

在下面的程序中,我们将删除包含“Team 1”或“Team 2”的行。

Python3

# importing the library
import pandas as pd
  
# Dataframe
df = pd.DataFrame({'team': ['Team 1', 'Team 1', 'Team 2', 
                            'Team 3', 'Team 2', 'Team 3'],
                   'Subject': ['Math', 'Science', 'Science', 
                               'Math', 'Science', 'Math'],
                   'points': [10, 8, 10, 6, 6, 5]})
  
# Dropping the rows of team 1 and team 2
df = df[df["team"].str.contains("Team 1|Team 2") == False]
  
# display
df

输出

方法 3:删除具有给定部分字符串的行

在这里,我们使用相同的函数和一个带有我们需要搜索的单词部分的 join 方法。

例子:

在下面这个程序中,情况与上述两种情况不同。在这里,我们将选择并删除具有给定部分字符串的行。例如,我们将在列主题上删除带有“Sci”的行。

Python3

# importing the library
import pandas as pd
  
# Dataframe
df = pd.DataFrame({'team': ['Team 1', 'Team 1', 'Team 2', 
                            'Team 3', 'Team 2', 'Team 3'],
                   'Subject': ['Math', 'Science', 'Science',
                               'Math', 'Science', 'Math'],
                   'points': [10, 8, 10, 6, 6, 5]})
  
# Dropping the rows with "Sci"
# identify partial string
discard = ["Sci"]
  
# drop rows that contain the partial string "Sci"
df[~df.Subject.str.contains('|'.join(discard))]
  
#display
df

输出: