如何为每个词性标签创建pandas数据框列?

时间:2019-04-02 12:09:25

标签: python pandas nltk pos-tagger

我有一个数据集,该数据集由标记为POS的短语组成,作为数据框的一列:

Current Dataframe

我想在数据框中创建一个新列,该列仅由上一列中的专有名词组成:

Desired Solution

现在,我正在单行尝试这样的操作:

if 'NNP' in df['Description_POS'][96][0:-1]:
df['Proper Noun'] = df['Description_POS'][96]

但是然后我不知道如何为每一行循环执行此操作,以及如何获取包含专有名词的元组。 我现在很新,对使用的内容一无所知,因此,我们将不胜感激!

编辑:我尝试了推荐的解决方案,它似乎可以工作,但是存在问题。

这是我的数据框: Original dataframe

实施推荐的代码后

df['Proper Nouns'] = df['POS_Description'].apply(
    lambda row: [i[0] for i in row if i[1] == 'NNP']) 

它看起来像这样: Dataframe after creating a proper nouns column

1 个答案:

答案 0 :(得分:0)

您可以使用apply方法,顾名思义,该方法会将给定函数应用于数据框或序列的每一行。这将返回一个序列,您可以将其作为新列添加到数据框中

df['Proper Nouns'] = df['POS_Description'].apply(
    lambda row: [i[0] for i in row if i[1] == 'NNP'])

我假设POS_Description dtype是元组列表。