【问题标题】:Pandas: Read CSV: ValueError: could not convert string to floatPandas:读取 CSV:ValueError:无法将字符串转换为浮点数
【发布时间】:2023-03-13 19:29:01
【问题描述】:

我正在尝试使用 pandas.read_csv 读取一个大而复杂的 CSV 文件。 确切的命令是

pd.read_csv(filename, quotechar='"', low_memory=True, dtype=data_types, usecols= columns, true_values=['T'], false_values=['F'])

我很确定数据类型是正确的。我可以毫无问题地读取前 1600 万行(设置 nrows=16000000),但在此之后的某个地方出现以下错误

ValueError:无法将字符串转换为浮点数:'1,123'

看起来,出于某种原因,pandas 认为两列应该是一列。

可能是什么问题?我该如何解决?

【问题讨论】:

  • 该行数据中是否缺少预期的分隔符?
  • 您是否对引发错误的行进行了目视检查?或者,您能否向我们提供该行 +/- 1 行(总共三行)?
  • 如果丢失一些数据不是问题,您可以添加 'error_bad_lines=False' 以跳过有问题的行
  • 我认为不检查有问题的行非常困难。但是您可以检查除以零 - 像 something/0 这样的字符串 - 它可能会导致此错误。
  • 如何找到该行?错误信息没有说行。

标签: python csv pandas


【解决方案1】:

我发现了错误。问题是千位分隔符。

在写入 CSV 文件时,大多数数字都低于千,并且已正确写入 CSV 文件。然而,这个值大于千,它被写成“1,123”,熊猫不识别为数字而是字符串。

【讨论】:

    猜你喜欢
    • 2019-10-03
    • 1970-01-01
    • 2021-07-22
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 2019-10-19
    • 2016-12-31
    • 1970-01-01
    相关资源
    最近更新 更多