python - 如何提取包含文本的 pandas 系列的每一行中的特定数字

标签 python pandas

我有一个 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。请注意,每行文本中有多个数字。 我尝试过正则表达式,但它不是只给出那些特定的数字,而是拾取每行中的所有数字。本质上我想要单词后面的数字 '分数'。任何帮助将不胜感激。

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

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

关于python - 如何提取包含文本的 pandas 系列的每一行中的特定数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44252250/

相关文章:

python - 如何使用ajax和django读取文件?

Python:使用装饰器来改变方法参数是一件坏事吗?

python - 如何在 REPL 中用 Python 运行单元测试?

python - 高压图 : Plotting multiple lines with null values

python-3.x - 从 pandas 数据框中删除\n 的问题

python - OSX 安装 Python 分发

python - 非常简单的 python 函数需要在函数而不是子函数上花费很长时间

python - 如何对列求和以在特定行上创建第三个列?

python - 检查 pandas Dataframe 的值是否在两个列表之间。添加一个 boolean 列

python - 仅选择多索引 DataFrame 的一个索引