【发布时间】:2021-11-16 06:14:40
【问题描述】:
我有一个数据框,其中数字表示为字符串。我需要删除括号(如果存在)并添加一个负号。例如,(30) 应该变成 -30。
正数不应改变。
df = pd.DataFrame({'a':['19','(30)','(1000)'],
'b':['(202)','200', '100'],
'c':['101','(30)', '40']})
a b c
0 19 (202) 101
1 (30) 200 (30)
2 (1000) 100 40
对于正则表达式,我可以对单个值执行此操作:
neg_pat = r'\((\d+)\)'
num = '(30)'
new_num = '-' + re.search(neg_pat, num).group(1)
print(new_num)
-30
现在,如何将其应用于数据框?我之前使用过 apply() 和 lambda 表达式,但我一直坚持将它们放在一起。
【问题讨论】:
-
差不多但不完全。 BENY 给出了很好的回答。谢谢。
标签: python-3.x regex pandas