我有一个Pandas DataFrame,如:
ID Traverse
001 1->1->1->2->3->1
002 13->13
003 2->3->13->15
004 5->6->3
005 16->7->7->7->7->8
006 4->4->3->5
007 5->5->1->1->1->2
输出应该是: -
1 to 1 : 4
1 to 2 : 2
2 to 3 : 2
4 to 4 : 1
3 to 5 : 1
13 to 13 : 1
7 to 7 : 3
.
.
.
So On
它基本上识别模式并计算模式的出现次数,并为这样的DataFrame提供输出。
我写了一个类似的查询: -
df.Quad.str.contains(r'1->1').sum()` #To get 1->1
但是它将包含图案的行添加为1-> 1但不单独添加
注意:1-> 1-> 1应该输出1到1:2(同样)
答案 0 :(得分:0)
import pandas as pd
from collections import Counter
df = <your dataframe>
count = Counter()
for row in df['traverse']:
nums = list(map(int, row.split('->')))
for index, value in enumerate(nums[:-1]):
count[value, nums[index + 1]] += 1
for key, value in sorted(count.items()):
print('{k[0]} to {k[1]} : {v}'.format(k=key, v=value))
输出:
1 to 1 : 4
1 to 2 : 2
2 to 3 : 2
3 to 1 : 1
3 to 5 : 1
3 to 13 : 1
4 to 3 : 1
4 to 4 : 1
5 to 1 : 1
5 to 5 : 1
5 to 6 : 1
6 to 3 : 1
7 to 7 : 3
7 to 8 : 1
13 to 13 : 1
13 to 15 : 1
16 to 7 : 1