Как реализовать функцию в столбце 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