计算一个值存在多少行

时间:2019-11-06 13:53:56

标签: python-3.x pandas

我想计算一个数据帧中单词的出现频率。这是我要实现的目标的一个示例。

words = ['Dungeon',
'Crawling',
'Puzzle',
'RPG',]

desc = 
0       [Dungeon, count, game, kid, draw, toddler, Unique]
1       [Beautiful, simple, music, application, toddle]
2       [Fun, intuitive, number, game, baby, toddler]

请注意,desc是1690行的熊猫数据框。

现在我想检查words[i] in desc 我不想嵌套for循环,所以做了一个函数,只是检查单词是否在desc中,然后对每一行使用apply(),然后使用sum

我得到的功能是:

def tmp(word, desc):
    return (word in desc)

但是,当我使用以下代码:desc.apply(tmp, args = words[0])时,出现错误消息:tmp() takes 2 positional arguments but 8 were given。但是,当我手动将其与值tmp(words[0], desc[0])配合使用时,它就可以正常工作。...

1 个答案:

答案 0 :(得分:7)

如果要避免循环,请将DataFrame构造函数与DataFrame.isin一起使用,并将计数True的值使用sum

s = pd.DataFrame(desc.tolist()).isin(words).sum(axis=1)
print(s)
0    1
1    0
2    0
dtype: int64