将带有 $ 的货币转换为 Python pandas 中的数字

新手上路,请多包涵

我在熊猫数据框中有以下数据:

     state        1st        2nd             3rd
0   California  $11,593,820 $109,264,246    $8,496,273
1   New York    $10,861,680 $45,336,041     $6,317,300
2   Florida     $7,942,848  $69,369,589     $4,697,244
3   Texas       $7,536,817  $61,830,712     $5,736,941

我想对三列(第一、第二、第三)执行一些简单的分析(例如,sum、groupby),但这三列的数据类型是对象(或字符串)。

所以我使用了如下代码进行数据转换:

 data = data.convert_objects(convert_numeric=True)

但是,可能由于美元符号,转换不起作用。有什么建议吗?

原文由 kevin 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 655
2 个回答

@EdChum 的回答很聪明而且效果很好。但是既然烤蛋糕的方法不止一种……为什么不使用正则表达式呢?例如:

 df[df.columns[1:]] = df[df.columns[1:]].replace('[\$,]', '', regex=True).astype(float)

对我来说,这更具可读性。

原文由 dagrha 发布,翻译遵循 CC BY-SA 4.0 许可协议

也可以使用 locale 如下

import locale
import pandas as pd
locale.setlocale(locale.LC_ALL,'')
df['1st']=df.1st.map(lambda x: locale.atof(x.strip('$')))

注意上面的代码是在 Python 3 和 Windows 环境下测试的

原文由 sushmit 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题