我试图仅从字符串中提取数字以数字或小数结尾
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
时,它就变成了别的东西。
以下正则表达式模式似乎在这里起作用:
^(\d+).*?(\d+(?:\.\d+)?)?$
这与前导整数标签匹配,后跟可选的结束整数/小数。 更新后的 Pandas 代码如下所示:
df.iloc[:,0].str.extract(r'^(\d+).*?(\d+(?:\.\d+)?)?$')