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