从熊猫系列中提取pos_tag_sents

时间:2019-09-18 13:40:27

标签: python pandas nltk pos

按照线程How to apply pos_tag_sents() to pandas dataframe efficiently的建议,我运行代码以为变量之一中的文本标识不同的pos。

现在我设法创建了感兴趣的列-sub ['POS']-如何提取我的相关信息-所有NN-并为每个列创建一个列?

print(sub['POS'])

5     [(e-mail, JJ), (new, JJ), (delhi, NN), ((, (),...
4     [(bangladesh, JJ), (garment, NN), (unions, NNS...
41    [(listen, VB), (blaze, NN), (wrecks, NNS), (te...
10    [(11:49, CD), (am, VBP), (,, ,), (september, V...
17    [(listen, JJ), (two, CD), (events, NNS), (plan...

作为输出,我想要一个新列(此处为“ NN”),其中包含每一行的所有NN。

df = pd.DataFrame(["delhi", 
                   "garment" , 
                   "blaze", 
                   NaN], columns=['NN'])

1 个答案:

答案 0 :(得分:0)

所以我假设您在数据框中有一列,其中每一行都是一个元组列表。如果我错了,请纠正我。您要从该列为每个“标签”创建新列。您认为以下是什么将实现您想要的目标?

import pandas as pd
import numpy as np

df = pd.DataFrame({"line":[[('e-mail', 'JJ'), ('new', 'JJ'), ('delhi', 'NN')]]})

def extract_pos(line,pos):
    return [word[0] for word in line if word[1] == pos]

df['NN'] = [extract_pos(line,'NN') for line in df['line']]
df['JJ'] = [extract_pos(line,'JJ') for line in df['line']]

这样,您可以根据需要添加许多列,结果可能看起来像以下内容。

enter image description here

希望这会有所帮助, 干杯