【发布时间】:2020-09-01 04:03:56
【问题描述】:
我正在使用 pandas,并且有一个数据框,其中包含一系列句子和说它们的人,如下所示:
sentence person
'hello world' Matt
'cake, delicious cake!' Matt
'lovely day' Maria
'i like cake' Matt
'a new day' Maria
'a new world' Maria
我想通过person 计算sentence(例如cake、world、day)中正则表达式字符串的非重叠匹配。注意sentence 的每一行可能包含多个匹配项(例如cake):
person 'day' 'cake' 'world'
Matt 0 3 1
Maria 2 0 1
到目前为止,我正在这样做:
rows_cake = df[df['sentences'].str.contains(r"cake")
counts_cake = rows_cake.value_counts()
但是,这个str.contains 给了我包含cake 的行,但不是cake 的单个实例。
我知道我可以在rows_cake 上使用str.counts(r"cake")。但是,在实践中,我的数据框非常大(> 1000 万行),并且我使用的正则表达式非常复杂,因此如果可能,我正在寻找更有效的解决方案。
【问题讨论】:
标签: python regex pandas dataframe