Python 从熊猫系列中提取位置标签

Python 从熊猫系列中提取位置标签,python,pandas,nltk,pos,Python,Pandas,Nltk,Pos,根据线程的建议,我运行代码,为我的一个变量中的文本识别不同的位置 既然我成功地创建了感兴趣的列-sub['POS']-我如何提取我的相关信息-所有NN-并为每个NN创建一列 print(sub['POS']) 5 [(e-mail, JJ), (new, JJ), (delhi, NN), ((, (),... 4 [(bangladesh, JJ), (garment, NN), (unions, NNS... 41 [(listen, VB), (blaze, NN)

根据线程的建议,我运行代码,为我的一个变量中的文本识别不同的位置

既然我成功地创建了感兴趣的列-sub['POS']-我如何提取我的相关信息-所有NN-并为每个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'])

所以我假设数据帧中有一列,其中每一行都是元组列表。如果我错了,请纠正我。从该列中,您希望为每个“标记”创建新列。你认为以下是实现你想做的事情的方法吗

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']]
这样,您可以根据需要添加许多列,结果可能如下所示

希望这有帮助,
干杯

您能提供一个预期输出的示例吗?我添加了我希望输出的方式-一个新列,其中每行包含子['POS']系列的所有NN。太好了:)快乐编码!