如何在Python中使用正则表达式从字符串中正确提取数字?

问题描述 投票:0回答:1

我试图仅从字符串中提取数字以数字或小数结尾

df = pd.DataFrame({'Names': ["Absolute Neutrophil Count","Absolute Lymphocyte Count 2.9",
                       "Absolute Neutrophil Count 10.2","ESR (Modified Westergren) 8",
                        "Free Triiodothyronine (FT3) 3.59",
                        "Free Triiodothyronine FT4 4.53"]})

df

                         Names
0   Absolute Neutrophil Count
1   Absolute Lymphocyte Count 2.9
2   Absolute Neutrophil Count 10.2
3   ESR (Modified Westergren) 8
4   Free Triiodothyronine (FT3) 3.59
5   Free Triiodothyronine FT4 4.53

期望的提取结果:

0  Missing/None
1  2.9
2  10.2
3  8
4  3.59
5  4.53

我正在尝试下面的代码,但这没有给出预期的结果。

df.iloc[:,0].str.extract(r'^(.*?)\s*(\d\.?\d*)?$') #  '\d+\.\d+'

请在答案和

.extract
中使用数据框形式的结构,否则有时在这里用
re
strings
回答可以工作,但是当我尝试将它们应用于
df
时,它就变成了别的东西。

python pandas regex
1个回答
0
投票

以下正则表达式模式似乎在这里起作用:

^(\d+).*?(\d+(?:\.\d+)?)?$

这与前导整数标签匹配,后跟可选的结束整数/小数。 更新后的 Pandas 代码如下所示:

df.iloc[:,0].str.extract(r'^(\d+).*?(\d+(?:\.\d+)?)?$')
© www.soinside.com 2019 - 2024. All rights reserved.