为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

UYOU 2021-08-24 17:20:24
我知道这是一个被反复问过的问题,但我对列表理解不太擅长,而且我的代码有一点小变化。我有一个包含关键字的数据框,如果关键字包含一个或多个专用列表中的关键字,我想过滤它们。请注意,我不是在寻找确切的表达式,只是在数据框中出现子字符串。基本上我认为它应该是这样的: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')]


查看完整回答
反对 回复 2021-08-24
?
达令说

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


查看完整回答
反对 回复 2021-08-24
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

使用:

df['tag'].str.contains('|'.join(substring_list))


查看完整回答
反对 回复 2021-08-24
  • 3 回答
  • 0 关注
  • 140 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号