Нахождение определенного последовательного образца - PullRequest
0 голосов
/ 21 января 2019

У меня есть такой фрейм данных:

Id  Seq Event
1     2    A 
1     3    B 
1     5    c 
1     6    A 
2     1    A 
2     2    B 
2     4    A 
2     6    B

Я хочу узнать, сколько раз появляется конкретный паттерн.Давайте скажем "AB".Вывод должен быть.

Id  Pattern_Count
1    1
2    2 

Я пытался использовать Event + Event.shift () и искать определенный шаблон.Это утомительная задача, когда мне приходится искать более длинный паттерн, такой как «ABCDE», и я не хочу сдвигать его 4 раза.Есть ли альтернативный способ сделать это?

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Вы можете использовать groupby, чтобы изолировать свои группы, а затем объединить ваши строки с sum, чтобы подсчитать вхождения вашей подстроки.

result = df.groupby('Id')['Event'].sum().str.count('AB')
0 голосов
/ 21 января 2019

Вы можете сделать это с groupby, agg и str.count:

(df.groupby('Id')['Event']
   .agg(''.join)
   .str.count('AB')
   .reset_index(name='Pattern_Count'))

   Id  Pattern_Count
0   1              1
1   2              2

Обратите внимание, что str.count будет работать только для простых совпадений подстрок, шаблоны регулярных выражений не поддерживаются напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...