我正在尝试将字符串转换为多列中的浮点数。该字符串括在括号中,但我需要转换为负浮点数才能执行某些操作。
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,并且搞乱了我的操作。
答案 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