Skip to main content
 首页 » 编程设计

python之将两个正则表达式之lambda 函数合二为一

2024年08月22日37davidwang456

我想结合两个正则表达式函数来清理我的数据框。假设我有以下数据框。

import pandas as pd 
time = ["09:00", "10:00", "11:00", "12:00", "13:00", "33:00"] 
result = ["+52", "+62", "+44 - 10a10", "+44", "+30 - $1200", "110"] 
data = pd.DataFrame({'time' : time, 'result' : result}) 

data 看起来像这样。

    result        time 
0   +52           09:00 
1   +62           10:00 
2   +44 - 10a10   11:00 
3   +44           12:00 
4   +30 - $1200   13:00 
5   110           33:00 

首先,我想删除 + 符号。其次,我想删除 - 符号及其后的所有内容。我可以用两个函数来完成。

import re 
data['result'] = data['result'].map(lambda x: re.sub('\+', '', x)) 
data['result'] = data['result'].map(lambda x: re.sub('\-.*', '', x)) 

data 现在看起来像这样。

    result  time 
0   52      09:00 
1   62      10:00 
2   44      11:00 
3   44      12:00 
4   30      13:00 
5   110     33:00 

有没有办法一步完成所有替换?

请您参考如下方法:

您可以在 RegEx 中使用 or (|) 并一次完成这两个操作,就像这样

>>> import re 
>>> re.sub(r'\+|-.*', '', 'a+b+c-d+f-g') 
'abc' 

因此,在您的情况下,lambda 函数将是

data['result'] = data['result'].map(lambda x: re.sub('\+|-.*', '', x))