【发布时间】:2021-09-21 21:47:42
【问题描述】:
我想检查 pandas 数据框列 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。如果有人能让我知道如何解决这个特定问题,我将不胜感激。非常感谢。
【问题讨论】:
-
.匹配任何内容。所以表达式.F1可以是后面跟F1的任何东西。两个字符串都有这种模式。索引 0 中的9F1和索引 1 中的7F1和0F1。还不清楚您是如何使用掩码的,因为它应该与显示的两个 ID 匹配。 -
您可以使用
'\.F1'或re.escape()转义 -
df["ID"].str.contains('\\'+'|\\'.join(searchfor)) -
@AndrejKesely 非常感谢您的建议。只是为了确认它会在第一行用“\.F1”转义对吗?
-
@SkipperLin 试试这个
searchfor = ['\.F1', '\.N1', '\.FW', '\.SP']
标签: python pandas string dataframe