【问题标题】:Pandas read_csv ignore dollar sign when parsing numbersPandas read_csv 在解析数字时忽略美元符号
【发布时间】:2016-03-30 21:45:50
【问题描述】:

我有一个 csv 文件,其中包含一些带有美元符号的单元格(例如 $46.5)。我在函数pandas.read_csv() 中强制所有类型为numpy.float64。它抱怨ValueError: could not convert string to float: $46.5。有没有办法干净地处理这个问题?

【问题讨论】:

  • 您必须作为后处理步骤进行剥离和投射,或者将方法传递给 converters 参数以获取 read_csv
  • 您是否尝试使用浮点数作为货币?你可能应该使用decimalstackoverflow.com/questions/3730019/…

标签: python numpy pandas


【解决方案1】:

您可以为相关列添加转换器:

pd.DataFrame({'col1': ['$46.51', '$38.00', 40], 
              'col2': [1, 2, 3]}).to_csv('test_df.csv', index=False)

>>> pd.read_csv('test_df.csv', converters={'col1': lambda s: float(s.replace('$', ''))})
    col1  col2
0  46.51     1
1  38.00     2
2  40.00     3

【讨论】:

  • 您可能需要为逗号添加相同的逻辑,否则它会尝试替换 $1,437.22
  • @flyingmeatball 使用thousands=',' kwarg。
猜你喜欢
  • 2021-08-06
  • 2013-07-19
  • 2014-07-27
  • 1970-01-01
  • 1970-01-01
  • 2021-10-03
  • 2020-12-30
  • 1970-01-01
  • 2023-03-17
相关资源
最近更新 更多