使用Python在同一步骤中应用操作和除法操作

时间:2018-08-10 14:48:01

标签: python pandas

我正在尝试使用以下代码在文本中获取名词的比例,这给了我一个错误。我正在使用一个函数来计算文本中名词的数量,并且总的字数在不同的列中。

pos_family = {
    'noun' : ['NN','NNS','NNP','NNPS']
}

def check_pos_tag(x, flag):
    cnt = 0
    try:
        for tag,value in x.items():
            if tag in pos_family[flag]:
                cnt +=value
    except:
        pass
    return cnt

df2['noun_count'] = df2['PoS_Count'].apply(lambda x: check_pos_tag(x, 'noun')/df2['word_count'])

注意:我已经使用nltk包通过PoS标签获取计数,并且我的数据框中的PoS_Count列中的字典中有计数。

如果我在第一次运行中删除“ / df2 ['word_count']”并获得名词计数,然后再次包含它并运行,它可以正常工作,但是如果我第一次运行它,则会出现以下错误。 / p>

ValueError: Wrong number of items passed 100, placement implies 1

非常感谢您的帮助

预先感谢!

1 个答案:

答案 0 :(得分:1)

您猜到了,问题出在/df2['word_count']位。

df2['word_count']是熊猫系列,但是您需要在此处使用浮点数或整数,因为您将check_pos_tag(x, 'noun')(即int)除以它。

一个可能的解决方案是从系列中提取相应的字段并在您的lambda中使用它。

但是,单独执行每个操作会更容易(并且可以说更快)。
试试这个:

df2['noun_count'] = df2['PoS_Count'].apply(lambda x: check_pos_tag(x, 'noun')) / df2['word_count']