【问题标题】:How to remove square brackets in result pos_tag如何删除结果pos_tag中的方括号
【发布时间】:2017-01-13 22:25:48
【问题描述】:

我想从数据框中提取名词。我这样做如下

import pandas as pd
import nltk
from nltk.tag import pos_tag
df = pd.DataFrame({'pos': ['noun', 'Alice', 'good', 'well', 'city']})
noun=[]
for index, row in df.iterrows():
    noun.append([word for word,pos in pos_tag(row) if pos == 'NN'])
df['noun'] = noun  

我得到 df['noun']

0     [noun]
1    [Alice]
2         []
3         []
4     [city]

我使用正则表达式

df['noun'].replace('[^a-zA-Z0-9]', '', regex = True)

一次又一次

0     [noun]
1    [Alice]
2         []
3         []
4     [city]
Name: noun, dtype: object

怎么了?

【问题讨论】:

    标签: python nltk pos-tagger


    【解决方案1】:

    括号表示您在数据框的每个单元格中都有列表。如果您确定每个列表最多只有一个元素,您可以在名词列上使用str 并提取第一个元素:

    df['noun'] = df.noun.str[0]
    
    df
    #    pos    noun
    #0  noun    noun
    #1  Alice   Alice
    #2  good    NaN
    #3  well    NaN
    #4  city    city
    

    【讨论】:

    • 如果有多个元素怎么办?
    猜你喜欢
    • 2021-12-19
    • 2021-07-17
    • 1970-01-01
    • 2013-11-11
    • 2015-06-27
    • 1970-01-01
    • 2013-04-11
    • 2023-03-16
    • 1970-01-01
    相关资源
    最近更新 更多