srs = pd.Series([7.0, 2.0, 1.0, 2.0, 3.0, 5.0, 4.0])
sub_list = [1.0, 2.0, 3.0]
n = len(sub_list)
index_matching = []
for i in range(srs.shape[0] - n + 1):
sub_srs = srs.iloc[i: i+n]
if (sub_srs == sub_list).all():
index_matching.append(sub_srs.index)
print(index_matching)
# [RangeIndex(start=2, stop=5, step=1)]
或者在一行中列出:
out = [srs.iloc[i:i+n].index for i in range(srs.shape[0] - n + 1) if (srs.iloc[i: i+n] == sub_list).all()]
print(out)
# [RangeIndex(start=2, stop=5, step=1)]
如果要显式列表:
real_values = [[i for i in idx] for idx in out]
print(real_values)
# [[2, 3, 4]]
一种简单的方法是迭代序列,将
n
元素子集,然后比较它们是否等于给定的列表:代码如下:
或者在一行中列出:
如果要显式列表:
使用rolling window我们可以找到列表} 找到这个元素的索引,并根据窗口大小更正这个值:
a
的第一个匹配项,它在窗口的末尾(右边框)放置一个“marker”(例如0,任何非Nan值都可以)。然后我们使用^{输出:
最简单的解决方案可能是使用列表理解:
相关问题 更多 >
编程相关推荐