熊猫从另一个系列中的一个系列中找到超级字符串

时间:2018-06-28 14:11:06

标签: python regex string pandas substring

不一定要在大熊猫中进行,但是如果可以在大熊猫中进行,那就太好了。

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

['XXY8779','0060-19','McChicken','456728']

我还有另一个列表或系列,其中包含原始字符串,例如:

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

这将返回类似:

[True, True, True, False]

我正在寻找类似这样的比赛:

^[a-zA-Z0-9.,$;]+ < matching string in other list >

换句话说,以任何一个或多个字符开头的字符,但其余字符与我的另一个列表中的一个字符串完全匹配。

有人对实现此目标的最佳方法有任何想法吗?

谢谢!

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

由于总是在结尾,因此可以使用.str.endswith和s2来缩短逻辑。 pd.Series[any(i.endswith(j) for j in s2) for i in s1] #[True, True, True, False] 只是上面的列表(但如果它们是pd.Series也可以使用)

log

然后您可以使用linear将其转换为系列,或者直接使用该列表作为蒙版。