Как убрать квадратные скобки в результате pos_tag

Я хочу извлечь существительные из фрейма данных. я делаю как показано ниже

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['существительное']

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

что случилось?


person Edward    schedule 06.09.2016    source источник


Ответы (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
person Psidom    schedule 06.09.2016
comment
а если элементов несколько? - person StatguyUser; 30.05.2017