gpt4 book ai didi

python - Pandas 系列 str.extract 无法匹配正则表达式模式

转载 作者:行者123 更新时间:2023-12-01 01:03:59 25 4
gpt4 key购买 nike

以下是我的数据框的样子
mydf =

col1    Col2    Col3                 Col4 
0 val1 1x \n\t\t\t\t\t\t3x\n\t\t\t\t\t Calculate
1 val2 1x \n\t\t\t\t\t\t3x\n\t\t\t\t\t Calculate
2 val3 1x \n\t\t\t\t\t\t12.5x\n\t\t\t\t\t Calculated
3 val4 1x \n\t\t\t\t\t\t8x\n\t\t\t\t\t Calculated
4 val5 1x \n\t\t\t\t\t\t10x\n\t\t\t\t\t Calculate
5 val18 1x \n\t\t\t\t\t\t6.3x\n\t\t\t\t\t Calculate

从 Col4 中,我想提取数字(包括小数位。

但是,正则表达式模式对我不起作用。

mydf[Col4].str.extract('[1-9]\d*(\.\d+)?') <br>

对于大多数行,它返回 NaN对于带小数的,返回 .5/.3 (即仅十进制值)

我尝试使用 re.search 来检查我的模式并且它有效。

newstr = mydf[col4][5] 
re.search('[1-9]\d*(\.\d+)?', newstr)

newstr 变为 - '\n\t\t\t\t\t\t12.5x\n\t\t\t\t\t'(双反斜杠)。以上返回

re.Match object; span=(14, 18), match='12.5'</b>

正如预期的那样。

看起来我错过了一些明显的东西。

最佳答案

使用str.findall

df.Col3.str.findall(r'[-+]?\d*\.\d+|\d+').str[0]#notice here I also extract the sign
0 3
1 3
2 12.5
3 8
4 10
5 6.3
Name: Col3, dtype: object

关于python - Pandas 系列 str.extract 无法匹配正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55551615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com