如何在熊猫数据框列上实现功能

时间:2019-02-04 16:25:29

标签: python pandas nlp spacy textacy

我正在尝试将textacy.extract.subject_verb_object_triples函数应用于pandas 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 个答案:

答案 0 :(得分:0)

原因是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