这是一个解决方案:
使用滚动检查是否在任何列中找到了模式。这将为您提供与模式匹配的组的最后一个索引
matched = df.rolling(len(pattern)).apply(lambda x: all(np.equal(x, pattern)))matched = matched.sum(axis = 1).astype(bool) #Sum to perform boolean ORmatchedOut[129]: Dates2017-07-07 False2017-07-08 False2017-07-09 False2017-07-10 False2017-07-11 False2017-07-12 True2017-07-13 False2017-07-14 False2017-07-15 False2017-07-16 Falsedtype: bool
对于每个匹配项,添加完整模式的索引:
idx_matched = np.where(matched)[0]subset = [range(match-len(pattern)+1, match+1) for match in idx_matched]
获取所有模式:
result = pd.concat([df.iloc[subs,:] for subs in subset], axis = 0)resultOut[128]: ColA ColBDates 2017-07-10 100 912017-07-11 90 1072017-07-12 105 99
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)