Python: как добавить список токенов в новый столбец dataframe - PullRequest
0 голосов
/ 12 февраля 2019

У меня большой массив данных с более чем 50 строками.Для каждой строки у меня есть столбец «токены», который содержит большое количество текстовых токенов.Я использовал цикл for вместе с распределением частот, чтобы найти топ-10 токенов в каждом ряду для столбца «токены».

Я пытаюсь добавить новый столбец в мой фрейм данных с именем «top10», чтобы в каждой строке топ-10 токенов содержался в столбце «top10».

Это текущий код, который я использую, чтобы найти свои топ-10 токенов для каждой строки.

for i in range(len(df)):
   tokens = df.iloc[i]['tokens']
   frequency = nltk.FreqDist(tokens)
   print(" ", word_frequency.most_common(10))

Пример моего фрейма данных:

id location about age tokens
1    usa     ...  20   ['jim','hi','hello'......]
...
... 
40    uk     ...  50   ['bobby','hi','hey'......]

Ожидаемый результат:

id location about age tokens                           top10
1    usa     ...  20   ['jim','hi','hello'......]   ['hi', 'paddy'....]
...
... 
40    uk     ...  50   ['bobby','hi','hey'......]   ['john', 'python'..]

В столбце top10 должны отображаться слова в порядке убывания.

Любая помощь приветствуется, спасибо!

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

панды apply с аргументами ключевых слов reduce (не раскрывать списки) и axis=1 (по строкам, а не по столбцам по умолчанию) лучше, потому что вы уже выполняете итерации по строкам.Панды интерпретируют ваши списки как серии, которые не помещаются в отдельные ячейки.

import pandas as pd
import nltk

df =  pd.DataFrame({x :{'tokens': ['hello', 'python', 'is', 'is', 'is', 'dog', 'god', 'cat', 'act', 'fraud', 'hola', 'the', 'a', 'the', 'on', 'no', 'of', 'foo', 'foo']} for x in range(0,10)} ).T


def most_common_words_list (x):
    word_count_tups = nltk.FreqDist(x['tokens']).most_common(2)
    return [word for word, count in word_count_tups]

df ['top2'] = df.apply(most_common_words_list,  result_type='reduce', axis=1)
0 голосов
/ 12 февраля 2019

Это простой способ добавления нового столбца в DF:

df['top10'] = word_frequency.most_common(10)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...