Python 如何为每个词性标记创建数据帧列?
我有一个数据集,它由标记化、POS标记的短语组成,作为数据帧的一列: 我想在dataframe中创建一个新列,只包含前一列中的专有名词: 现在,我正在为一行尝试类似的内容: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] 但是我不知道如何对每一行循环这个,以及如何获得包含专有名词的元组。 我现在是个新手,不知道该用什么,所以任何帮助都将不胜感激 编辑:我尝试
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',然后重试。我以前没有见过这样的问题,所以不能对此发表更多评论。