【发布时间】:2018-12-23 16:37:24
【问题描述】:
我正在查看长度为 4 的序列中 0 和 1 的所有可能组合。因此,我在数据帧或列表中有 2^4 行。 (我不介意格式,只要可以单独查看每个组合即可)。在这些组合中,我正在寻找特定的 重叠 模式。
patterns=["00","101","1100"]
因此,在“0000”的第一个组合中,我希望 Python 告诉我它发现了 3 个事件(我不在乎这三个事件中的哪一个)。
我找到了像 search() 这样的函数,但它们只给出了 all 16 种组合的模式总数,而不是单独给出每个组合。另外,我无法适应正确的数据风格。已经尝试过 str.count() 但即使将数据框转换为字符串后,似乎也对我不起作用。
我能想到的最好的方法是:
import itertools
sequ=[x for x in itertools.product(states,repeat=n)] #generates all the
possible seq-s of the variable
from re import finditer
patterns=["00","101","1100"]
for match in finditer(patterns, sequ):
print(match.span())
但是,这仅适用于简单的模式,例如,patterns=["00"]
【问题讨论】:
-
向我们展示一个示例输入和输出。从您在此处发布的内容中很难弄清楚您想要什么。
-
这个描述很难理解。显示数据和预期的输出,然后描述您希望如何从数据到输出。
-
(当你显示数据时,创建一个minimal reproducible example,而不是一个包含数千行的数据框。)
-
很抱歉,您的问题不清楚。另外,为什么这被标记为“数据框”?你在任何地方都使用熊猫吗?
标签: python list dataframe count pattern-matching