按照线程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'])
答案 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']]
这样,您可以根据需要添加许多列,结果可能看起来像以下内容。
希望这会有所帮助, 干杯