Создайте матрицу с количеством последовательных строк

#python #pandas

Вопрос:

У меня есть фрейм данных pandas, состоящий из двух столбцов со строками в нем, как показано ниже:

 word 1 word 2 cat dog dog mouse mouse dog dog dog dog mouse mouse ...  

Что я хотел бы сделать в python, так это построить матрицу, которая подсчитывает, сколько раз одно слово следует за другим, как это:

 cat dog mouse cat 0 1 0 dog 0 1 2 mouse 0 1 0  

То, что я пробовал до сих пор, было токенизацией (но это может быть не лучший подход) и вычислением матричного соотношения (но, по-видимому pandas.DataFrame.corr , не работает со строками).

У вас есть какие-нибудь идеи о том, как действовать дальше? Спасибо.

Ответ №1:

Вы можете использовать pandas.crosstab и reindex для обеспечения наличия всех комбинаций:

 import numpy as np idx = np.unique(df.values.flatten())  (pd.crosstab(df['word 1'], df['word 2'])  .reindex(index=idx, columns=idx, fill_value=0) )  

выход:

 word 2 ... cat dog mouse word 1  ... 0 0 0 0 cat 0 0 1 0 dog 0 0 1 2 mouse 1 0 1 0  

NB. ... появляется здесь как слово из-за вашего примера

Комментарии:

1. спасибо, это сработало идеально!