20

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

对于存储在文件中的整数,比方说63,将其xlrd解释为63.0type number

为什么不能xlrd识别63为整数?

假设sheet.row(1)[0].value给了我们63.0. 我怎样才能将其转换回63.

4

6 回答 6

26

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)to转换(62.9, 63, 63.1, etc)似乎是对 CPU 时间的毫无意义的浪费。

于 2012-01-11T21:16:58.157 回答
15

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

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

>>> int(63.0)
63
>>> int(sheet.row(1)[0].value)
63
于 2012-01-11T19:51:33.460 回答
12

如果您将 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

希望你觉得这个有用 :)

于 2012-01-11T21:00:27.070 回答
5

我想起了xlrd文档中的这个宝石:

Excel 电子表格中的日期

实际上,没有这样的事情。你所拥有的是浮点数和虔诚的希望。

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

于 2012-01-11T20:44:01.517 回答
1

从 1.0.0 开始尝试convert_dtypes()

按照对相关问题的有用答案pandas.DataFrame.convert_dtypes方法尝试将返回的列转换为其他(目前是实验性的) 。这些包括,并且还处理缺失值。有关转换为列的动机,请参阅处理文本数据,以及有关kleene 逻辑运算符的本节以了解列的优点。dtypesDataFramedtypesInt64booleanStringDtypestringboolean

于 2021-03-11T13:44:03.233 回答
0

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

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

于 2013-10-29T14:29:43.597 回答