Python-用括号将显示为字符串的负数替换为括号

时间:2019-02-26 13:32:48

标签: python pandas dataframe

我有一个数据集,其中一些负数以(3.4)格式显示,另一些以-3.4表示。我正在尝试将所有括号调整为浮点格式。

下面的公式给我一个错误

  

replace()参数1必须为str,而不是list

Total['Rate']=Total['Rate'].apply(lambda x:x.replace(['(',')'],['-','']))

Old Format
(.35)
1.2
-2


Final Format
-.35
1.2
-2

有人建议 Total ['Rate'] = Total ['Rate']。apply(lambda x:float(x)if'('not in x else float('-'+ x [x.find(“(”)+ 1: x.find(“)”)]))

这给出了错误 TypeError:“ float”类型的参数不可迭代

3 个答案:

答案 0 :(得分:1)

您也可以尝试:

Total['rate'] = Total['rate'].astype(str).str.replace('\((.*)\)', '-\\1')

答案 1 :(得分:0)

看看How to use replace method 只需串联replace()方法:

Total['Rate']=Total['Rate'].apply(lambda x:x.replace('(',')').replace('-',''))

答案 2 :(得分:0)

看起来像您需要的。

演示:

import pandas as pd

df = pd.DataFrame({"Rate": ["(.35)", "1.2", "-2"]})
print(df["Rate"].str.replace("(", "-").str.rstrip(")").astype(float))

输出:

0   -0.35
1    1.20
2   -2.00
Name: Rate, dtype: float64