Как преобразовать текст в фрейм данных в Python (с применением некоторых правил)

#python #nlp

Вопрос:

Я новичок в Python и у меня есть эта сложная функция, которую мне нужно создать, но я не знаю, как это сделать

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

 RepID     RepText
---------------------------
1         Math Math Math  English Physics Sport Sport English English English English 
2         Sport English English English Math Math Physics Physics Physics Computer Computer Computer Computer 
3         Chemistry Chemistry Math Math Math English English English Math Math Math Math Math Sport Sport
 

Функция, которую мне нужно создать, называется fnClusters

Он просто находит N повторяющихся слов в рептексте и возвращает их в кадре данных

если N равно 3, то будут засчитаны те же слова, которые были показаны 3 или более раз рядом друг с другом

итак, Математика Математика Математика Английская физика Английский Английский Математика будет засчитываться как

 Math  English  Physics
------------------------
4       0       0
 

Английский Английский Английский Английский Английский Математика Математика Математика Английский Математика Спорт Спорт будет засчитываться как

 Math  English  Sports
------------------------
4       6       0
 
 

Как я могу создать эту функцию в Python?

Ответ №1:

Один из способов использования pandas.Series.str.split с value_counts :

 new_df = df["RepText"].str.split("s ").apply(pd.Series.value_counts)
n = 3
print(new_df[new_df.ge(n)].fillna(0))
 

Выход:

    English  Math  Sport  Physics  Computer  Chemistry
0      5.0   3.0    0.0      0.0       0.0        0.0
1      3.0   0.0    0.0      3.0       4.0        0.0
2      3.0   8.0    0.0      0.0       0.0        0.0
 

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

1. Я понимаю, что ModuleNotFoundError: Нет модуля с именем «панды». Серия’