Как реализовать функцию в столбце pandas dataframe

Я пытаюсь применить textacy.extract.subject_verb_object_triples функция к столбцу панд df. Функция возвращает пустые объекты-генераторы вместо subject_verb_object_triples при применении следующим образом:

sp500news3['title'].apply(lambda x: textacy.extract.subject_verb_object_triples)

или же

sp500news3['title'].apply(textacy.extract.subject_verb_object_triples)

Я также попробовал:

import spacy
import textacy
def extract_SVO1(text):
    new_doc = textacy.extract.subject_verb_object_triples(text)
    new_list = list(new_doc)
    text = new_list

sp500news3['title'] = sp500news3['title'].apply(extract_SVO1)

Как я могу реализовать функцию в моем столбце dataframe, чтобы вернуть правильный вывод функции?

1 ответ

Причина в том, что textacy.extract.subject_verb_object_triples возвращает генератор, который должен быть преобразован в некоторый итеративный. Оба ваших подхода работоспособны, но нуждаются в некоторой модификации.

Первый способ: потреблять генераторы

sp500news3['title'].apply(lambda x: textacy.extract.subject_verb_object_triples).apply(pd.Series)

Второй способ: написать отдельную функцию для применения

def extract_SVO1(text):
    new_doc = textacy.extract.subject_verb_object_triples(text)
    new_list = list(new_doc)
    return new_list
Другие вопросы по тегам