Python 数据帧中的正则表达式
我有一个这样的数据框一个这样的列Python 数据帧中的正则表达式,python,regex,pandas,Python,Regex,Pandas,我有一个这样的数据框一个这样的列 COL1 RED[10%(INC)] RED[12%(INC)] 我想创建col2,如下所示 COL2 10 12 你能帮我找到好的regex吗? 我试过这个: RED\[(\d+\.\d+) %INC\] 但是它不会走。如果您想使用正则表达式并且只提取指定上下文中的数字,可以使用 df['COL2']=df['COL1'].str.extract(r'RED\[(\d+(?:\.\d+)?%\[INC]],expand=False) 看 详
COL1
RED[10%(INC)]
RED[12%(INC)]
我想创建col2
,如下所示
COL2
10
12
你能帮我找到好的regex吗?
我试过这个:
RED\[(\d+\.\d+) %INC\]
但是它不会走。如果您想使用正则表达式并且只提取指定上下文中的数字,可以使用
df['COL2']=df['COL1'].str.extract(r'RED\[(\d+(?:\.\d+)?%\[INC]],expand=False)
看
详细信息
-一个红色\[
字符串红色[
-捕获组1:一个或多个数字,后跟一个点和一个或多个数字的可选序列(\d+(?:\。\d+))
-一个%\[INC]]
文本字符串%[INC]]
- 提取后跟百分号的数字:
df['COL1'].str.extract(r'(\d+(?:\。\d+))%,expand=False)
- 使用
进行拆分,获取第二项并从中删除[
:%
df['COL1'].str.split(“[”).str[1].str.replace(“%”,”)
re.findall
:
模块和数据:
import pandas as pd
df = pd.DataFrame({'COL1':['RED[10%(INC)','RED[12%(INC)']})
解决方案:
df['COL2'] = df['COL1'].apply(lambda x: re.findall('[0-9]+', x))
df['COL2'] = pd.DataFrame(df['COL2'].tolist())
嗨!!非常感谢你,如果我有这样的红色[12%(/INC)](带/)@T.mum,你检查过“其他选项”吗?如果你有
(
和)
,请帮我看一下。/
没有必要逃跑。@viktor我试过红色\[(\d+.\d+)%\(\/INC\]
但它不会走路,我不知道如何处理/之前的问题INC@T.mum输入中没有空格,为什么要在模式中添加空格?为什么不按照我在回答中显示的方式将小数部分设置为可选?请重新阅读正则表达式解释。使用RED\[(\d+(?:\。\d+)%\(/INC\)]
。在Python字符串中,不需要转义斜杠,它们不是任何特殊的正则表达式元字符。