如何使用熊猫迭代每行中的单词

时间:2021-07-03 12:17:53

标签: python python-3.x pandas dataframe nlp

我有一个如下所示的数据框

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 列中的每个项目吗?

1 个答案:

答案 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] ;)