删除括号并转换为负浮点数

时间:2019-06-26 13:37:00

标签: python pandas

我正在尝试将字符串转换为多列中的浮点数。该字符串括在括号中,但我需要转换为负浮点数才能执行某些操作。

Fund            Open            Activity    Gain (Loss) Close
Manager 1   10049217.19 -784717.34  237452.94   9501952.79
Manager 2   11035433.41 0           171126.7    11206560.11
Manager 3   26117736    0           326914.02   26444650.02
Manager 4   3682923.8   -260472.43  33999.86    3456451.23
Manager 5   0           17696136.53 143115.18   17839251.71
Manager 6   20036136.53 -20036136.53    0           0

“打开”,“活动”和“关闭”都是对象

我已经尝试过堆栈溢出和reg表达式,但是我仍然只能在要转换的字符串上获取NaN。

这是我尝试的代码

cols = df1[['Open', 'Activity', 'Gain (Loss)', 'Close']] 
    for col in cols:
        df1[col].replace( '[)]','', regex=True ).replace( '[(]','-',   
        regex=True ).astype(float)
        df1[col] = pd.to_numeric(df1[col], errors='coerce')
print(df1)

当我运行这段代码时,我仍然得到NaN,并且搞乱了我的操作。

1 个答案:

答案 0 :(得分:0)

将函数应用于数据框的每个元素:

df = pd.DataFrame({'Open': ['12.34', '(56.78)']}) 
df.applymap(lambda x: -float(x.strip('()')) if '(' in x else float(x))
    Open
0  12.34
1 -56.78