Как применить CountVectorizer к каждой строке в кадре данных? - PullRequest
0 голосов
/ 04 октября 2019

У меня есть датафрейм, скажем, df, который имеет 3 столбца. Столбцы А и В - это несколько строк. Столбец C является числовой переменной. Dataframe

Я хочу преобразовать это в матрицу объектов, передав ее в CountVectorizer.

Я определяю свой countVectorizer как:

cv = CountVectorizer(input='content', encoding='iso-8859-1', 
                     decode_error='ignore', analyzer='word',
                    ngram_range=(1), tokenizer=my_tokenizer, stop_words='english',
                    binary=True)

Затем я передаю весь кадр данных в cv.fit_transform (df), который не работает. Я получаю эту ошибку: не могу распаковать не повторяемый объект int

Затем я преобразую каждую строку кадра данных в

sample = pdt_items["A"] + "," + pdt_items["C"].astype(str) + "," + pdt_items["B"]

Затем я применяю

cv_m = sample.apply(lambda row: cv.fit_transform(row))

Я все ещеget error: ValueError: Итерируется по ожидаемым необработанным текстовым документам, получен строковый объект.

Пожалуйста, дайте мне знать, где я ошибаюсь? Или, если мне нужен другой подход?

1 Ответ

1 голос
/ 04 октября 2019

Попробуйте это.

import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer

A = ['very good day', 'a random thought', 'maybe like this']

B = ['so fast and slow', 'the meaning of this', 'here you go']

C = [1, 2, 3]

pdt_items = pd.DataFrame({'A':A,'B':B,'C':C})

cv = CountVectorizer()

# use pd.DataFrame here to avoid your error and add your column name

sample = pd.DataFrame(pdt_items['A']+','+pdt_items['B']+','+pdt_items['C'].astype('str'), columns=['Output'])

vectorized = cv.fit_transform(sample['Output'])

print(type(vectorized))

Вывод

<class 'scipy.sparse.csr.csr_matrix'>
...