【问题标题】:extract pos_tag_sents from pandas series从熊猫系列中提取 pos_tag_sents
【发布时间】:2019-09-18 13:40:27
【问题描述】:

按照线程How to apply pos_tag_sents() to pandas dataframe efficiently 的建议,我运行代码来识别我的一个变量中文本的不同位置。

现在我设法创建了感兴趣的列 - 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'])

【问题讨论】:

  • 能否提供一个预期输出的样本?
  • 我添加了我想要的输出 - 一个新列,其中每一行包含 sub['POS'] 系列的所有 NN。

标签: python pandas nltk part-of-speech


【解决方案1】:

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

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']]

这样您可以根据需要添加许多列,结果可能如下所示。

希望这会有所帮助, 干杯

【讨论】:

  • 太棒了 :) 编码愉快!
猜你喜欢
  • 1970-01-01
  • 2016-10-22
  • 2017-11-03
  • 1970-01-01
  • 2021-10-22
  • 1970-01-01
  • 1970-01-01
  • 2016-10-20
  • 2020-09-17
相关资源
最近更新 更多