熊猫在另一个系列的一个系列中找到超级弦

dod*_*ddy 1 python regex string substring pandas

这不一定要在熊猫中完成,但如果可以在熊猫中完成它会很好.

假设我有一个列表或一系列字符串:

['XXY8779','0060-19','McChicken','456728']
Run Code Online (Sandbox Code Playgroud)

我有另一个列表或系列包含原始的子字符串,如下所示:

['60-19','Chicken','8779','1124231','92871','johnson']
Run Code Online (Sandbox Code Playgroud)

这会返回类似于:

[True, True, True, False]
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个匹配的东西:

^[a-zA-Z0-9.,$;]+ < matching string in other list >
Run Code Online (Sandbox Code Playgroud)

换句话说,从一个或多个任何字符开始,但其余字符与我的其他列表中的一个字符串完全匹配.

有没有人对完成此任务的最佳方法有任何想法?

谢谢!

piR*_*red 5

使用 str.contains

'|'.join(s2)生成一个告诉contains使用regex和使用或逻辑的字符串.

s1 = pd.Series(['XXY8779', '0060-19', 'McChicken', '456728'])

s2 = ['60-19', 'Chicken', '8779', '1124231', '92871', 'johnson']

s1.str.contains('|'.join(s2))

0     True
1     True
2     True
3    False
dtype: bool
Run Code Online (Sandbox Code Playgroud)

  • 如果你确实有需要转义的字符,`'|'.join(map(re.escape,s2))` (2认同)