Python 将两个regex-lambda函数合并为一个

Python 将两个regex-lambda函数合并为一个,python,regex,lambda,Python,Regex,Lambda,我想结合两个正则表达式函数来清理我的数据帧。假设我有以下数据帧 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}) 数据如下所示

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

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})
数据
如下所示

    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
    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
首先,我想删除
+
符号。第二,我想删除
-
符号及其后面的所有内容。我可以通过两个功能来实现这一点

import re
data['result'] = data['result'].map(lambda x: re.sub('\+', '', x))
data['result'] = data['result'].map(lambda x: re.sub('\-.*', '', x))
数据
现在看起来像这样

    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
    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
有一种方法可以一步完成所有替换吗?

您可以使用正则表达式中的or(
|
),一次完成这两个操作,如下所示

>>> import re
>>> re.sub(r'\+|-.*', '', 'a+b+c-d+f-g')
'abc'
在你的例子中,lambda函数是

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

是否有一种方法可以在一个步骤中将同一函数应用于数据帧中的多个列(列不一定相邻)?显然,这不起作用:
data[[col1,col2]].apply(lambda x:re.sub('\+\124;-.''.'''.'',x))
@sedeh抱歉!我对熊猫不太了解。也许你想单独问这个问题。