Pandas:如何过滤包含特定字符串的行

519 阅读2分钟

你可以使用以下语法来过滤pandas DataFrame中包含某个字符串的行:

df[df["col"].str.contains("this string")]

本教程通过以下DataFrame讲解了几个如何实际使用该语法的例子:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'B', 'B', 'C'],
                   'conference': ['East', 'East', 'East', 'West', 'West', 'East'],
                   'points': [11, 8, 10, 6, 6, 5]})

#view DataFrame
df

        team	conference   points
0	A	East         11
1	A	East	     8
2	A	East	     10
3	B	West         6
4	B	West         6
5	C	East         5

例1:过滤包含特定字符串的行

下面的代码显示了如何过滤DataFrame中团队列中包含 "A "的行:

df[df["team"].str.contains("A")]

	team	conference points
0	A	East	   11
1	A	East	   8
2	A	East	   10

只有团队列包含'A'的行被保留。

例2:过滤列表中包含一个字符串的行

下面的代码显示了如何过滤DataFrame中团队列中包含'A'或'B'的行:

df[df["team"].str.contains("A|B")]

	team	conference points
0	A	East	   11
1	A	East	   8
2	A	East	   10
3	B	West	   6
4	B	West	   6

只有团队列包含'A'或'B'的行被保留。

例3:过滤包含部分字符串的行

在前面的例子中,我们根据与一个或多个字符串完全匹配的行进行过滤。

然而,如果我们想过滤包含部分字符串的行,那么我们可以使用以下语法:

#identify partial string to look for
keep= ["Wes"]

#filter for rows that contain the partial string "Wes" in the conference column
df[df.conference.str.contains('|'.join(keep))]

	team	conference points
3	B	West	   6
4	B	West	   6

只有会议列包含 "Wes "的行被保留。

其他资源

下面的教程解释了如何在pandas中执行其他常见操作:

如何根据条件在Pandas数据框架中删除行
如何根据多个条件过滤Pandas数据框架
如何在Pandas数据框架中使用 "NOT IN "过滤器