我知道这是一个被反复问过的问题,但我对列表理解不太擅长,而且我的代码有一点小变化。我有一个包含关键字的数据框,如果关键字包含一个或多个专用列表中的关键字,我想过滤它们。请注意,我不是在寻找确切的表达式,只是在数据框中出现子字符串。基本上我认为它应该是这样的:substring_list = ['abc', 'def']df[df['tag'].str.contains(substring) for substring in substring_list]我不断收到语法错误。有什么想法吗?感谢支持!
3 回答

慕斯王
TA贡献1864条经验 获得超2个赞
Pandas 进行二进制过滤,因此它返回一个 True / False 列表,对应于字符串是否包含您的键,您可以对所有条件进行按位运算和运算,因此您可以获得包含所有子字符串的字符串或其中任何一个(取决于您使用的是 'and' & 还是 'or' | )
df[df['tag'].str.contains('abc') | df['tag'].str.contains('def')]

达令说
TA贡献1821条经验 获得超6个赞
简单地试试这个:
通过将模式中的单词与|以下内容连接来构建正则表达式来使用模式库搜索:
df[df.tag.str.contains('|'.join(substring_list))]
如果您只有几个字符串要搜索,那么 simple 可以像下面这样使用:
df[df.tag.str.contains("abc|def")]
示例说明:
>>> df
tag
0 abc
1 edf
2 abc
3 def
4 efg
>>> df[df.tag.str.contains("abc|def")]
tag
0 abc
2 abc
3 def
>>> substring_list = ['abc', 'def']
>>> df[df.tag.str.contains('|'.join(substring_list))]
tag
0 abc
2 abc
3 def
添加回答
举报
0/150
提交
取消