python - Pandas 如何过滤多个系列的子串

标签 python pandas string dataframe

我想检查 pandas dataframe 列 id 是否包含以下子字符串 '.F1', '.N1', '.FW', '.SP' .

我目前正在使用以下代码:

searchfor = ['.F1', '.N1', '.FW', '.SP']
mask = (df["id"].str.contains('|'.join(searchfor)))

id 列如下所示:

                   ID
0  F611B4E369F1D293B5
1  10302389527F190F1A

我实际上是在查看 id 列是否包含以 . 开头的四个子字符串。由于某些原因,F1 将被过滤掉。在当前示例中,它没有 .F1。如果有人能让我知道如何解决这个特定问题,我将不胜感激。非常感谢。

最佳答案

您可以使用 re.escape()以下列方式转义正则表达式元字符,这样您就不需要转义单词列表 searchfor 中的每个字符串(无需更改 searchfor< 的定义):

import re

searchfor = ['.F1', '.N1', '.FW', '.SP']            # no need to escape each string

pattern = '|'.join(map(re.escape, searchfor))       # use re.escape() with map()

mask = (df["id"].str.contains(pattern))

re.escape()将为您转义每个字符串:

print(pattern)

'\\.F1|\\.N1|\\.FW|\\.SP'

关于python - Pandas 如何过滤多个系列的子串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68352246/

相关文章:

python - Pygame:按住键时玩家不会移动

python - 每个 python 程序都应该与 setup.py 一起分发吗?

Python-如何从多索引数据框中选择行

python - 在python中循环遍历文本文件时出错

python - PyhtonError导入错误: No module named six

python - Where 函数忽略 Nan

python - 如何更好地计算另一个列表中列表的出现次数,然后使用计数列出每个元素的结果

string - 编写比较字符串函数

javascript - string.prototype.search ('$' ) 在每个字符串上返回正 int

javascript - 如何检测 JavaScript 中的字母字符?