Skip to main content
 首页 » 编程设计

python之在不迭代 Python Pandas 的情况下计算大数据框中的模式出现次数

2025年05月04日30mfryf

我有以下数据框:

    Jack   Joe   Mary 
1    I      O     O 
2    I      O     I 
3    I      I     I 
4    O      I     I 
5    O      I     O 
6    I      O     O 
7    I      O     I 
8    I      O     I 
9    O      I     I 
10   O      I     O 
      .... 

我的专栏中散布着“I I I”和“O O O”的模式。

我想计算每一列中“I I I”和“O O O”出现的次数。

我知道我可以遍历每一列的每一行,但这是一个非常大的数据框。

有没有人有 1) 更有效的方法和 2) 更 pythonic 的方法?

谢谢。

请您参考如下方法:

以“Jack”列和“I I I”模式为例。

使用移位,我们得到

>>> (df.Jack == df.Jack.shift(1)) & (df.Jack == df.Jack.shift(2)) & (df.Jack == 'I') 
1     False 
2     False 
3      True 
4     False 
5     False 
6     False 
7     False 
8      True 
9     False 
10    False 
Name: Jack, dtype: bool 

所以

((df.Jack == df.Jack.shift(1)) & (df.Jack == df.Jack.shift(2)) & (df.Jack == 'I')).sum()  

给出列中模式的出现次数。

您可以轻松地将其修改为其他模式和列。

请注意,“I I I I”将算作出现两次的模式(交叠)。