如何根据列表从熊猫数据框中过滤子字符串?

我知道这是一个被反复问过的问题,但我对列表理解不太擅长,而且我的代码有一点小变化。


我有一个包含关键字的数据框,如果关键字包含一个或多个专用列表中的关键字,我想过滤它们。


请注意,我不是在寻找确切的表达式,只是在数据框中出现子字符串。


基本上我认为它应该是这样的:


substring_list = ['abc', 'def']

df[df['tag'].str.contains(substring) for substring in substring_list]

我不断收到语法错误。


有什么想法吗?


感谢支持!


UYOU
浏览 141回答 3
3回答

慕斯王

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

达令说

简单地试试这个:通过将模式中的单词与|以下内容连接来构建正则表达式来使用模式库搜索:df[df.tag.str.contains('|'.join(substring_list))]如果您只有几个字符串要搜索,那么 simple 可以像下面这样使用:df[df.tag.str.contains("abc|def")]示例说明:>>> df   tag0  abc1  edf2  abc3  def4  efg>>> df[df.tag.str.contains("abc|def")]   tag0  abc2  abc3  def>>> substring_list = ['abc', 'def']>>> df[df.tag.str.contains('|'.join(substring_list))]   tag0  abc2  abc3  def

元芳怎么了

使用:df['tag'].str.contains('|'.join(substring_list))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python