Python 2.7 使用python查找序列在数据帧中重复的次数

Python 2.7 使用python查找序列在数据帧中重复的次数,python-2.7,numpy,pandas,math,scipy,Python 2.7,Numpy,Pandas,Math,Scipy,有没有办法确定一个序列在一个数据帧中重复多少次 假设我有一个包含大量1和3的数据帧,我想看看这个序列[3,1,3,3,1]重复了多少次 下面是一个示例列表。3,1,3,3,1,3,3,1,3,3,1,3,1,1,1,1,3,1,3,3,1,1,3,3,3,3 这里有一个我正在尝试做的例子 第一部分是正确的3,1,3,3,1,3,3,1,3,3,1,3,1,1,1,1,3,1,3,3,1,1,1,3,3,3,3,3 第二部分为假3,1,3,3,1,3,3,1,3,3,1,3,1,1,1,1,3,1

有没有办法确定一个序列在一个数据帧中重复多少次

假设我有一个包含大量1和3的数据帧,我想看看这个序列[3,1,3,3,1]重复了多少次

下面是一个示例列表。3,1,3,3,1,3,3,1,3,3,1,3,1,1,1,1,3,1,3,3,1,1,3,3,3,3

这里有一个我正在尝试做的例子

第一部分是正确的3,1,3,3,1,3,3,1,3,3,1,3,1,1,1,1,3,1,3,3,1,1,1,3,3,3,3,3

第二部分为假3,1,3,3,1,3,3,1,3,3,1,3,1,1,1,1,3,1,3,1,1,1,3,3,3,3,3

第三部分是错误的 3,1,3,3,1,3,3,1,3,3,1,3,1,1,1,1,3,1,3,1,1,3,3,3

我想根据我试图找到的序列的长度一次分析各个部分。按数据帧的数字顺序

我的数据是dateandtime格式的。但我可以改变这一点


感谢您的帮助,我真的非常感谢大家在这个网站上所做的一切。

这将数字列表转换为逗号分隔的字符串,然后将每个连续的块与目标进行比较

from itertools import izip_longest

my_list = [3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 1, 1, 1, 1, 3, 1, 3, 1, 1, 3, 3, 3]
target = [3, 1, 3, 3, 1]
n = len(target)
>>> sum(all(a == b for a, b in izip_longest(target, my_list[(i * n):((i + 1) * n)])) 
        for i in range(len(my_list) // n))
1
下面是另一种方法,它将整数转换为字符串,然后比较字符串

target = ",".join(str(number) for number in target)
>>> target
'3,1,3,3,1'
>>> sum(",".join(str(number) for number in my_list[(i * n):(i * n + n)]) == target 
        for i in range(len(my_list) / n))
1
为了更直观地了解发生了什么,列表一次分为五个元素,然后这些元素作为字符串连接起来。然后将这些字符串与类似转换的目标字符串进行比较,然后对匹配数进行求和

>>> [",".join(str(number) for number in my_list[(i * n):(i * n + n)]) 
     for i in range(len(my_list) / n)]
['3,1,3,3,1', '3,3,1,3,3', '1,3,1,1,1', '1,3,1,3,1']
步骤1 将整数列表转换为字符串

步骤二 使用模块的findall()函数查找
my\u list\u string
中出现的所有
target\u string

import re
my_list = [3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 1, 1, 1, 1, 3, 1, 3, 1, 1, 3, 3, 3]
target = [3, 1, 3, 3, 1]

my_list_string = ''.join(str(e) for e in my_list)
target_string = ''.join(str(e) for e in target)

print(len(re.findall(target_string, my_list_string)))

有没有一种方法可以使它在刚刚检查的序列中不使用相同的数字。这很难解释。就像它先检查前五个,然后检查下五个不在这个序列中的。举例可以更好地解释这一点。检查这些3,1,3,3,3,1,3,3,1,3,1,1,1,1,3,1,3,3,3,然后检查这些3,1,3,3,1,3,3,1,3,1,3,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3等等,以便快速哈?你是一个真正的手艺大师。我一直在想这个有一段时间了哈哈谢谢你真的很感激!!!虽然这个代码片段可以解决这个问题,但它确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。
import re
my_list = [3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 1, 1, 1, 1, 3, 1, 3, 1, 1, 3, 3, 3]
target = [3, 1, 3, 3, 1]

my_list_string = ''.join(str(e) for e in my_list)
target_string = ''.join(str(e) for e in target)

print(len(re.findall(target_string, my_list_string)))