Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何为每个词性标记创建数据帧列?_Python_Pandas_Nltk_Pos Tagger - Fatal编程技术网

Python 如何为每个词性标记创建数据帧列?

Python 如何为每个词性标记创建数据帧列?,python,pandas,nltk,pos-tagger,Python,Pandas,Nltk,Pos Tagger,我有一个数据集,它由标记化、POS标记的短语组成,作为数据帧的一列: 我想在dataframe中创建一个新列,只包含前一列中的专有名词: 现在,我正在为一行尝试类似的内容: if 'NNP' in df['Description_POS'][96][0:-1]: df['Proper Noun'] = df['Description_POS'][96] 但是我不知道如何对每一行循环这个,以及如何获得包含专有名词的元组。 我现在是个新手,不知道该用什么,所以任何帮助都将不胜感激 编辑:我尝试

我有一个数据集,它由标记化、POS标记的短语组成,作为数据帧的一列:

我想在dataframe中创建一个新列,只包含前一列中的专有名词:

现在,我正在为一行尝试类似的内容:

if 'NNP' in df['Description_POS'][96][0:-1]:
df['Proper Noun'] = df['Description_POS'][96]
但是我不知道如何对每一行循环这个,以及如何获得包含专有名词的元组。 我现在是个新手,不知道该用什么,所以任何帮助都将不胜感激

编辑:我尝试了推荐的解决方案,它似乎有效,但存在一个问题

这是我的数据帧:

在实现了推荐的代码之后

df['Proper Nouns'] = df['POS_Description'].apply(
    lambda row: [i[0] for i in row if i[1] == 'NNP']) 
看起来是这样的:

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

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

我假设POS_描述数据类型是一个元组列表

嘿,我想你的答案是有效的,但是我现在在专有名词栏中看到了像“-、、、、、、、、、、、、、、、、、”这样的字符。你知道出了什么问题吗?需要更多的细节。分享df.head()前后的结果。嗨,我添加了df.head()屏幕截图。这似乎是一些编码问题。如果正在读取文件,请输入参数encoding='utf-8',然后重试。我以前没有见过这样的问题,所以不能对此发表更多评论。