将货币转换为浮动(括号表示负数)

时间:2015-07-20 16:21:19

标签: python pandas currency

我有货币的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

2 个答案:

答案 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))