Есть ли более эффективный способ итерации по фрейму данных? - PullRequest
0 голосов
/ 08 января 2020
books_over10['Keywords'] = ""
    r = Rake() # Uses stopwords for english from NLTK, and all puntuation characters.
    for index, row in books_over10.iterrows():
        a=r.extract_keywords_from_text(row['bookTitle']) 
        c=r.get_ranked_phrases() # To get keyword phrases ranked with scores highest to lowest.
        books_over10.at[index, 'Keywords'] = c
    books_over10.head()

Я использую приведенный выше код, чтобы обработать все строки и извлечь ключевые слова из каждой строки из столбца bookTitle, а затем вставить их в виде списка в новый столбец с именем Ключевые слова в той же строке. Вопрос в том, есть ли более эффективный способ сделать это без итерации по всем строкам, потому что это занимает много времени. Любая помощь будет оценена. Заранее спасибо!

Решение от Changming:

def extractor(row):
    a=r.extract_keywords_from_text(row)
    return r.get_ranked_phrases() # To get keyword phrases ranked with scores highest to lowest.

r = Rake() # Uses stopwords for english from NLTK, and all puntuation characters.
books_over10['Keywords'] = books_over10['bookTitle'].map(lambda row : extractor(row))

1 Ответ

2 голосов
/ 08 января 2020

Попробуйте заглянуть в карту . Не уверен, какой именно Rake вы используете, и то, как вы его кодировали, немного сбивает с толку, но общий синтаксис был бы таким:

books_over10['Keywords'] = books_over10['bookTitle'].map(lambda a: FUNCTION(a))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...