我有一个数据集,其中一些负数以(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”类型的参数不可迭代
答案 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