字符串模式的总和?

时间:2018-04-06 09:40:13

标签: python pandas machine-learning

  

我有一个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(同样)

1 个答案:

答案 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