我想知道正则表达式匹配多少个项目/文档。最终结果应类似于以下格式:
data = [['Regular Expression 1', 10], ['Regular Expression 2', 15]]
final = pd.DataFrame(data, columns = ['Regular Expression', 'Count'])
这是文本文档的示例数据集
foo = pd.DataFrame({'a' : [1,2,3,4,5],
'b' : ['hi whatever something',
'foo', 'fat a a a foo', 'cat', 'fat']})
这是计算数据的正则表达式
g1 = foo['b'][foo['b'].str.contains(r'(?=.*foo)(?=.*fat)|(\bwhatever\b)',regex=True)].count()
g2 = foo['b'][foo['b'].str.contains(r'\bfat\W+(?:\w+\W+){0,5}?foo\b',regex=True)].count()
g1 # 2
g2 # 1
如何连接(在R中等效于大熊猫rbind
)数据行?这样我就可以使数据看起来像对象“最终”了?
我尝试了pd.concat([g1,g2], axis=0)
,但是通过使用concat得到了以下错误消息:cannot concatenate a non-NDFrame object
答案 0 :(得分:1)
循环使用str.contains
,然后concat
结果并调用sum
:
R = [r'(?=.*foo)(?=.*fat)|(\bwhatever\b)', r'\bfat\W+(?:\w+\W+){0,5}?foo\b']
df = pd.concat({r: foo['b'].str.contains(r) for r in R}, axis=1)
df.sum().rename_axis('regex').reset_index(name='count')
regex count
0 (?=.*foo)(?=.*fat)|(\bwhatever\b) 2
1 \bfat\W+(?:\w+\W+){0,5}?foo\b 1