你可以使用以下语法来过滤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 "过滤器