首先
我需要能够测试'abc'
是'axbyc'
的有序子集,而'egd'
不是'edg'
的有序子集。另一种说法是,如果我可以删除一个字符串的特定字符并使其等于另一个字符串,则它是一个有序的子集。
其次
我需要将一个pd.Series
与另一个pd.Series
进行比较,以确定一个元素是否是另一个元素的相应元素的有序子集。
考虑pd.Series
s1
和s2
s1 = pd.Series(['abc', 'egd'])
s2 = pd.Series(['axbyc', 'edg'])
我需要将它们与问题的结果进行比较
s1
的有序子集s2
的元素是否等于
0 True
1 False
dtype: bool
答案 0 :(得分:2)
问题的第一部分:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="submit" class="btn btn-lg rounded metro btn-primary" id="button1" value="Save">
<input type="submit" class="btn btn-lg rounded metro btn-primary" id="button2" value="Save">
问题的第二部分:
def ordered_subset(s1, s2):
s2 = iter(s2)
try:
for c in s1:
while next(s2) != c:
pass
else:
return True
except StopIteration:
return False
答案 1 :(得分:1)
使用'.*'.join
创建一个与序列匹配的正则表达式模式。
import re
import pandas as pd
s1 = pd.Series(['abc', 'egd'])
s2 = pd.Series(['axbyc', 'edg'])
match = lambda x: bool(re.match(*x))
pd.concat([s1.str.join('.*'), s2], axis=1).T.apply(match)
0 True
1 False
dtype: bool
请注意
s1.str.join('.*')
0 a.*b.*c
1 e.*g.*d
Name: x, dtype: object