Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python在同一步骤中应用操作和除法操作_Python_Pandas - Fatal编程技术网

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

使用Python在同一步骤中应用操作和除法操作,python,pandas,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]:

我试图使用下面的代码来获取文本中名词的比例,但这给了我一个错误。我正在使用一个函数来计算文本中的名词数量,并在另一列中计算出总字数

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_计数列的字典中有计数

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

ValueError: Wrong number of items passed 100, placement implies 1
非常感谢您的帮助


提前谢谢

正如您所猜测的,问题出在
/df2['word\u count']

df2['word\u count']
是一个系列,但是您需要在这里使用浮点或int,因为您要将
check\u pos\u标记(x,'名词')
(这是一个
int
)除以它

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

然而,单独完成每个操作会更容易(也可以说更快)
试试这个:

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

我们可以看到DF2的一些示例数据吗这里是示例数据单词_countpos_count 0 601{'JJ':65,'NN':117,'VBG':24,'CD':4}1201{'JJ':19,'NN':39,'NNP':6,'VBZ':1}2180{'NN':34,'JJ':15,'RB':5,'VBD':15}我知道如果我分别运行这两个计算,我可以得到期望的结果,但我想检查是否有一种方法可以一步完成。非常感谢。你的解决方案奏效了!