我有货币的df:
df = pd.DataFrame({'Currency':['$1.00','$2,000.00','(3,000.00)']})
Currency
0 $1.00
1 $2,000.00
2 (3,000.00)
我想将'Currency'dtype转换为float,但我遇到括号字符串(表示负数)的问题。这是我目前的代码:
df[['Currency']] = df[['Currency']].replace('[\$,]','',regex=True).astype(float)
会产生错误:
ValueError: could not convert string to float: (3000.00)
我想要的dtype float是:
Currency
0 1.00
1 2000.00
2 -3000.00
答案 0 :(得分:30)
只需将)
添加到现有命令,然后将(
转换为-
即可将括号中的数字设为负数。然后转换为float。
(df['Currency'].replace( '[\$,)]','', regex=True )
.replace( '[(]','-', regex=True ).astype(float))
Currency
0 1
1 2000
2 -3000
答案 1 :(得分:0)
这是因为如果您想确保将其添加到DataFrame,尤其是如果您有大量平均DataFrame所具有的列,那么您可以使用它
df['Currency']=(df['Currency'].replace( '[\$,)]','', regex=True )
.replace( '[(]','-', regex=True ).astype(float))