Мне нужен фрейм данных о совместном появлении символов

#python #pandas #dataframe #embedding

Вопрос:

 import pandas as pd

corpus = pd.DataFrame([[1, 'A B C A D B A'], [2, 'B A B B C B A']], columns=['id',
                      'sequence'])
corpus
 

Ожидаемый Результат

     A B C D
1   3 2 1 1
2   2 4 1 0
 

У меня есть фрейм данных, который выглядит так, как показано выше. Мне нужно посчитать совместное появление каждого персонажа.

Ответ №1:

Вы могли split бы ввести строку explode , и посчитать значения для каждой группы:

 (corpus.set_index('id')['sequence']
       .str.split(' ')
       .explode()
       .groupby(level='id').value_counts()
       .unstack(level='sequence', fill_value=0)
)
 

выход:

 sequence  A  B  C  D
id                  
1         3  2  1  1
2         2  4  1  0
 

Ответ №2:

Попробуйте с split тогда explode и str.get_dummies

 out = corpus.set_index('id').sequence.str.split(' ').explode().str.get_dummies().groupby(level=0).sum()
   A  B  C  D
1  3  2  1  1
2  2  4  1  0