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



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

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']"并获取名词计数并再次包含它并运行,它工作正常,但如果我第一次运行它,我会收到以下错误。

ValueError: Wrong number of items passed 100, placement implies 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']

最新更新