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

Python 如何在包含文本的熊猫系列的每行中提取特定数字,python,pandas,Python,Pandas,我有一个pd系列,如下所示 我想从那个序列中提取50,54,45号。请注意,每行文本中有多个数字。 我试过正则表达式,但它不是只给出那些特定的数字,而是提取每行中的所有数字。基本上我想要的是单词后面的数字 “马克”。任何帮助都将不胜感激 p、 我现在已经更新了这个问题。我尝试了这里给出的解决方案。事实上,我试过 pd.Series.str.findall(')?您需要查看语法(?Try 更新如下: s.str.extract('.*marks.*?(\d+)', expand = False)

我有一个pd系列,如下所示

我想从那个序列中提取50,54,45号。请注意,每行文本中有多个数字。 我试过正则表达式,但它不是只给出那些特定的数字,而是提取每行中的所有数字。基本上我想要的是单词后面的数字 “马克”。任何帮助都将不胜感激

p、 我现在已经更新了这个问题。我尝试了这里给出的解决方案。事实上,我试过


pd.Series.str.findall(')?您需要查看语法(?Try

更新如下:

s.str.extract('.*marks.*?(\d+)', expand = False)
此正则表达式考虑了标记后可能有或可能没有字符这一事实

你得到

0    50
1    54
2    45

谢谢PSIDOM,请看修改后的问题。感谢A ZA Z,但我又得到了空白系列。可能我没有正确的方法。在我的实际问题中,我首先检查是否有“标记”在该系列中。如果是,然后应用“提取”,否则提供空。
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
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