我想检查 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/