float() 的 Python 无效文字

标签 python floating-point literals rdd

我正在为我的数据挖掘项目使用 HIGGS 数据集。在 python 中解析数据时,我收到以下错误,

ValueError: invalid literal for float(): -8.854051232337951660e-

对于许多相同类型的值,我都收到此错误。我在分布式环境中使用 Apache Spark。

这是我在数据集中的行。

1.000000000000000000e+00,8.004817962646484375e-01,-3.643184900283813477e-01,-4.785313606262207031e-01,2.399173498153686523e+00,**-8.854051232337951660e-01**,1.204909682273864746e+00,-8.518521487712860107e-02,1.364478588104248047e+00,0.000000000000000000e+00,4.605550169944763184e-01,1.564514338970184326e-01,1.068501710891723633e+00,0.000000000000000000e+00,1.793796300888061523e+00,1.236290574073791504e+00,5.773849487304687500e-01,2.548224449157714844e+00,1.083405137062072754e+00,1.178002059459686279e-01,-1.116195082664489746e+00,0.000000000000000000e+00,8.484367132186889648e-01,1.113812208175659180e+00,9.878969192504882812e-01,5.820630192756652832e-01,4.325648546218872070e-01,1.004681587219238281e+00,8.518054485321044922e-01

我已经核对过,数据没有出入。

有人可以帮我解决这个错误消息吗?

最佳答案

如异常所示,

-8.854051232337951660e- 不是有效的 float in python

特别是,科学计数法很好,但它需要在 e 之后有一些东西 - 您的数据格式不正确。以下是可以接受的;

  • -8.854051232337951660e-1
  • -8.854051232337951660
  • -8.854051232337951660e1

from the docs如果你愿意

Some examples of floating point literals:

3.14 10. .001 1e100 3.14e-10 0e0

没有尾随数字的数据没有任何意义。没有 e,python 可以假定文字终止;加上一个额外的数字,python 可以扩展科学记数法

如果数据对来说看起来不错,但 python 似乎无法弄清楚发生了什么(应该是),请检查 之间的细微格式错误,如空格e 和下一个数字

回应编辑

最后一点很关键。数据看起来对你来说不错,但 python 提示;那是因为你在 python 中“解析”的方式与你用眼睛和大脑解析的方式不一致。你用什么来解析数据?你用逗号分开吗?当 digits 开始时你会 split 吗(这会导致问题)。如上所述引发异常;对您来说,问题在于追踪为什么要在解析中裁掉最后一位数字。 (顺便说一句,这对我来说听起来像是一个新问题,而不是这个问题的延续)。

例如,在您新发布的代码中,似乎在“e-”之后和“01”之前有一个换行符。如果那是我的浏览器,那么……哦,好吧。如果不是,那是你的问题

跳过错误条目,您可以执行something like this (tl;dr try/except them, because it's better forgiveness than permission)

关于float() 的 Python 无效文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33819130/

相关文章:

python - NumPy:创建类似于 "repeat"的 bool 数组,但在多个维度中

python - Gensim保存的字典没有id2token

python - 将文件读入字典

asp-classic - IF 语句中的 VBScript 隐式转换与变量到文字不同?

C# int32 字面量只能存储在 long 数据类型中

c++ - 为什么必须在运行时构造字符串?

c++ - 使用python或c++将xml/html字符串转换为图像

python - Numpy isin 函数的浮点舍入误差

小数点后没有任何零的 Ruby float

c - 使 C 浮点文字 float (而不是 double )