我有一个数据框,其中一列中包含句子列表,并且正在尝试创建一个等于字符串列表出现次数的新列。
例如,相关数据框看起来像
book['sentences']
0 The brown dog jumped over the big moon
1 The brown fox slid under the brown log
我正在尝试计算“brown”、“over”和“log”在每个句子中出现的次数(即新列将等于 2 和 3)。
我知道我可以使用 str.count 来做到这一点,但一次只能针对一个字符串,然后我必须将它们相加
book['count_brown'] = book['sentences'].str.count('brown')
book['count_over'] = book['sentences'].str.count('over')
book['count_log'] = book['sentences'].str.count('log')
book['count'] = book['count_brown']+book['count_over']+book['count_log']
我正在搜索的字符串列表超过 300 个单词,因此即使使用循环,它似乎也不是最佳的。有更好的方法吗?
最佳答案
甘基!
lst = ['brown', 'over', 'log']
book['sentences'].str.extractall(
'({})'.format('|'.join(lst))
).groupby(level=0)[0].value_counts().unstack(fill_value=0)
0 brown log over
0 1 0 1
1 2 1 0
关于python - 计算多个子字符串出现在数据框列中的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46250505/