我有一个如下所示的数据框
df = pd.DataFrame({'text': ["Hi how are you","I am fine","I love you","I hate you"],
'tokens':[('Hi','how','are','you'),('I','am','fine'),('I','love','you'),('I','hate','you')]})
我想获取每个令牌的 pos 标签
for tok in df['tokens'].iterrows():
print(token, token.pos_)
请注意这里的 pos_
表示它是来自 nlp 域的词性标签
但是,我收到一个错误
可以帮助我了解如何遍历 pandas 列中的每个项目吗?
答案 0 :(得分:1)
您得到 'Series' object has no attribute 'iterrows'
是因为您使用的是列 df['tokens']
,它给出了一个系列(仅 1 维),因此没有 iterrows 方法。
使用您的代码,您可以:
import pandas as pd
df = pd.DataFrame({'text': ["Hi how are you","I am fine","I love you","I hate you"],
'tokens':[('Hi','how','are','you'),('I','am','fine'),('I','love','you'),('I','hate','you')]})
for index, values in df.iterrows():
pos = 1
for x in values[1]:
print(pos, x)
pos += 1
或者你可以使用(类似于@AnuragDabas 评论的内容):
df['pos tag'] = df['tokens'].apply(lambda x:list(range(len(x)+1))[1:])
您只需要df.iat[2,1][1]
;)