excel文件中的整数变成了浮点数?

时间:2012-01-11 19:48:41

标签: python xlrd

我使用xlrd从excel文件中读取数据。

对于存储在文件中的整数,假设63xlrd将其解释为63.0类型的number

为什么xlrd无法将63识别为整数?

假设sheet.row(1)[0].value给了我们63.0。如何将其转换回63

6 个答案:

答案 0 :(得分:20)

Excel将所有数字视为浮点数。一般来说,它并不关心your_number % 1 == 0.0是否正确。

示例:A1 = 63.0, B1 = 63, C1 = INT(A1), A2 = TYPE(A1), B2 = TYPE(B1), C2 = TYPE(C1) 你会看到TYPE()在每种情况下都返回1。

从Excel帮助:

If value is   TYPE returns 
Number        1 
Text          2 
Logical value 4 
Error value   16 
Array         64 

xlrd报告它发现的内容。 xlrd在向您展示之前不会破坏其输入。将列从(62.9, 63.0, 63.1, etc)转换为(62.9, 63, 63.1, etc)似乎是对我的CPU时间毫无意义的浪费。

答案 1 :(得分:11)

查看documentation中的不同单元格类型,似乎单元格没有任何整数类型,它们只是浮点数。因此,即使你写了一个整数,这也是你得到浮动的原因。

要将float转换为整数,只需使用int

>>> int(63.0)
63
>>> int(sheet.row(1)[0].value)
63

答案 2 :(得分:9)

如果excel表中的所有条目都是整数,则jcollado给出的答案是正常的。 但是假设你有一个浮点数,你可以随时设置检查条件,如 -

    if i==int(i): //checking for the integer:
      print int(i)      // solving your problem and printing the integer
    else:
      print i           //printing the float if present

希望你觉得这很有用:)

答案 3 :(得分:3)

我从xlrd文档中提醒了这个宝石:

  

Excel电子表格中的日期

     

实际上,没有这样的事情。你有什么浮点   数字和虔诚的希望。

整数也是如此。也许减去虔诚的希望。

答案 4 :(得分:0)

我编写的代码试图将数字转换为Excel显示的字符串。该方法适用于至少整数和带逗号后两位数的数字。它也适用于许多其他格式。

这个想法,截图和代码在这里:http://uucode.com/blog/2013/10/22/using-xlrd-and-formatting-excel-numbers/

答案 5 :(得分:0)

从 1.0.0 开始尝试 convert_dtypes()

跟随 this useful answerrelated questionpandas.DataFrame.convert_dtypes 方法尝试将返回的 dtypes 中的列转换为其他(目前是实验性的)DataFrame。这些 dtypes 包括 Int64booleanStringDtype,它们也处理缺失值。请参阅 Working with text data 以了解转换为 string 列的动机以及 this section 上的 kleene logical operators 以了解 boolean 列的优势。