Передача списка в фрейме данных pandas в sklearn для TF IDF

#python #pandas #scikit-learn

Вопрос:

 My dataframe look like this a = pd.DataFrame({'x': {0: 'John', 1: 'Ron', 2: 'Don'},   'y': {0: [['Apple','Apple','Apple'],['Ball','Ball'],['Cat']], 1: [['Zebra','Zebra'],['Fox','Fox']], 2: [['Elf'],['Ball','Ball']]}})  

Где «x» относится к документам, а » y » относится к терминам (повторяется, сколько раз они встречаются)

Я хочу передать это кому-нибудь :

 v = TfidfVectorizer() z = v.fit_transform(a)  

В моих прочитанных данных это просто дает мне

 z.toarray() gt;array([[1.]])  

Что не имеет смысла?

Ответ №1:

IIUC использует понимание списков для сглаживания вложенных списков:

 v = TfidfVectorizer() z = [v.fit_transform([z for y in x for z in y]).toarray() for x in a['y']]  print (z) [array([[1., 0., 0.],  [1., 0., 0.],  [1., 0., 0.],  [0., 1., 0.],  [0., 1., 0.],  [0., 0., 1.]]), array([[0., 1.],  [0., 1.],  [1., 0.],  [1., 0.]]), array([[0., 1.],  [1., 0.],  [1., 0.]])]