我想计算一个数据帧中单词的出现频率。这是我要实现的目标的一个示例。
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])
配合使用时,它就可以正常工作。...
答案 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