我想结合两个正则表达式函数来清理我的数据框。假设我有以下数据框。
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))
