【发布时间】:2019-05-10 02:06:39
【问题描述】:
我正在学习熊猫系列字符串方法中的正则表达式操作。我能够从字符串中提取第一个数字,但我的正则表达式与第二个数字不匹配。如何捕获这两个数字?
注意第二行,这里的第二个元素是NAN。
代码:
import pandas as pd
df = pd.DataFrame({'a': ["number 1.23 has 1.2 ",
"number 12.2 has 12 "]})
pat = r""".+\s+
(\d+\.\d+)
.+
((?:\d+\.\d+)?)
.+"""
df['a'].str.extract(pat,flags=re.X,expand=True)
给予:
0 1
1.23
12.2
预期:
0 1
1.23 1.2
12.2 NaN
如何修复正则表达式?
我对正则表达式很陌生,所以请体谅并原谅我的无知。
【问题讨论】:
-
docs for findall
-
使用
.str.extractall和r'(\d+(?:\.\d+)?)'正则表达式 -
@WiktorStribiżew Gives 模式不包含捕获组。
-
试试这个
(\d+\.\d+).+(\d+\.\d+) -
r'(\d+(?:\.\d+)?)'有一个捕获组。请重试。