如何在包含文本的熊猫系列的每一行中提取特定数字



我有一个pd.series如下如下

O     some texts...final exam marks:50 next level:10
1     some texts....final exam marks he has got:54 next level:15
2     some texts...final marks ...some texts: 45 next best level:20

我希望从该系列中提取这些数字50,54,45。请注意,每行文本中都有多个数字。我已经尝试了正则票,但是它不仅给出了这些特定的数字,而是在每行中拾取所有数字。本质上,我想要这个单词之后的数字'分数'。任何帮助将不胜感激。

P.S。我现在已经更新了问题。我尝试了这里提供的解决方案。实际上,我尝试了

pd.Series.str.findall('?<=specific text *(d{2})')

但是获取空名单。此处示例的表示与实际问题非常相似,因此我编辑了帖子。

非常感谢。

尝试

s.str.extract('.*marks:s?(d+)', expand = False)

0    50
1    54
2    45

更新:

s.str.extract('.*marks.*?(d+)', expand = False)

此正则考虑以下事实:标记后可能没有字符

你得到

0    50
1    54
2    45

您需要查看语法(?&lt; =(,哪个声称所需模式在另一种模式之前, (?<=marks:) *([0-9]+)提取物在单词之后数字标记:,然后是可选空间:

s
#0         some texts...final exam marks:50 next lev...
#1         some texts....final exam marks:54 next le...
#2         some texts...final marks: 45 next best le...
#Name: 1, dtype: object
s.str.extract("(?<=marks:) *([0-9]+)", expand=False)
#0    50
#1    54
#2    45
#Name: 1, dtype: object

相关内容

  • 没有找到相关文章

最新更新