我有以下数据框:
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
....
我的专栏各处散布着“ III”和“ OOO”的图案。
我想计算每列中“ III”和“ OOO”的出现次数。
我知道我可以遍历每一列的每一行,但这是一个非常大的数据框。
有没有人有1)执行此操作的更有效方法和2)执行此操作的更Python的方法?
谢谢。
以“ Jack”列和“ II 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()
给出该模式在列中的出现次数。
您可以轻松地将其修改为其他模式和列。
注意,“ III I”将计为两次出现的模式(交叉)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句