Как получить все уникальные слова в кадре данных - PullRequest
0 голосов
/ 06 мая 2018

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

enter image description here

Поскольку текст содержится в нескольких строках, сначала я должен объединить их.

Я пробовал это:

all_text = df['review_body'].to_string()
words = set(a.split(' '))
words = list(words)

Но оттуда я получаю искаженные слова, например:

u'fel...\n1093'

Ответы [ 4 ]

0 голосов
/ 06 мая 2018

Просто ради того, чтобы поиграть и дать больше возможностей:)

df["review_body"].str.lower().str.split(" ").apply(pd.Series).stack().unique()

т.е. ниже и разделить, затем сложить все слова и использовать unique()

0 голосов
/ 06 мая 2018

Предположим, что датафрейм выглядит так:

df = pd.DataFrame({'review_body': ['This is review 1', 'This is other review 2', 'this is third review 3']})
print(df)

Результат:

              review_body
0        This is review 1
1  This is other review 2
2  this is third review 3

Затем вы можете попробовать выполнить следующее, используя cat, затем lower и split:

result = set(df['review_body'].str.cat(sep=' ').lower().split())
print(result)

Результат:

{'this', 'is', 'third', 'other', '3', 'review', '2', '1'}
0 голосов
/ 06 мая 2018

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

import re
string = 'this is a \nstring'
cleanstring = re.sub('[\n]', '', string)

Выход:

'this is a string'

Это поможет вам очистить данные, чтобы идентифицировать истинные уникальные слова, и не рассматривать \ nstring и string как два разных слова.

0 голосов
/ 06 мая 2018
words = " ".join(df.review_body).split()

Если вы хотите сохранить только уникальные нечисловые строки, я бы предложил набор значений:

words = {
    x for x in ' '.join(
        df.review_body.str.lower().tolist()
    ).split() if x.isalpha()
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...