【发布时间】:2018-04-17 15:38:03
【问题描述】:
我正在尝试从存储在 df 中的命名元组列表中提取第 n 个元素,如下所示:
df['text'] = [Tag(word='Come', pos='adj', lemma='Come'), Tag(word='on', pos='nounpl', lemma='on'), Tag(word='Feyenoord', pos='adj', lemma='Feyenoord')]
我试图仅从每个元组中提取包含 pos 信息的元素。这是我想要达到的结果:
df['text'] = ['adj', 'nounpl', 'adj']
这是我迄今为止尝试过的:
d =[]
count = 0
while count < df['text'].size:
d.append([item[1] for item in df['text'][count]])
count += 1
dfpos = pd.DataFrame({'text':d})
df['text']= pd.DataFrame({'text':d})
df['text']=df['text'].apply(lambda x: ', '.join(x))
这是错误:IndexError: tuple index out of range
我错过了什么?
解决方案:似乎最简单的解决方案是将元组变成一个列表。我不确定这是否是最好的解决方案,但它确实有效。
d =[]
count = 0
while count < df['text'].size:
temp=([list(item[1:-1]) for item in df['text'][count]])
d.append(sum(temp, []))
count += 1
df['text']= pd.DataFrame({'text':d})
df['text2']=df['text'].apply(lambda x: ', '.join(x))
【问题讨论】:
-
什么是
Tag?. -
标签是类还是命名元组?它是什么?怎么办? Nltk?
-
标签是我使用 treetaggerwrapper 获得的命名元组。
-
你能说出
df['text'].apply(lambda x : x[1] if len(x) > 1 else None).values的输出吗 -
这也返回元组索引我们的范围错误