python - 计算多个子字符串出现在数据框列中的次数

标签 python string pandas dataframe

我有一个数据框,其中一列中包含句子列表,并且正在尝试创建一个等于字符串列表出现次数的新列。

例如,相关数据框看起来像

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/

相关文章:

python - 骑自行车度过一个日期

c++ - 为什么打印字符串数组输出十六进制?

python - 使用 pandas 进行基于 NLTK 的文本处理

python - Bokeh 小部件 : custom css

python : How to navigate XML sub-nodes efficiently?

python - 如何在 python 中将字符串拆分为多个部分?

python - 计算在 python 中只有列和多行的数据框的编辑距离

python - Pandas 数据帧 : Replace charactere conditionally

python - 如何调用在当前 func(class) 之后定义的一个 func(class) ? Python

python - 如何提取 HTML 中元素的内容?