openpyxl:Excel中精度读取浮动丢失了吗?

时间:2015-11-24 12:13:05

标签: python excel openpyxl

我正在使用OS X并让我的Excel工作簿包含一些数据格式化为数字(这里是Dropbox link to data in Excel

data in Excel

现在,我正尝试使用 openpyxl 在Python中导入它们:

from openpyxl import load_workbook

# opening the file .xlsx
file_dir = './data'
file_xlsx = file_dir + '/db_StocksHighFreq.xlsx'

# with openpyxl
wb1 = load_workbook(file_xlsx)
IBM_wb1 = wb1.sheet_by_name('IBM')

# "Time" time series
Time = wb1['IBM'].columns[0][1:]

# "Price" time series
Price = wb1['IBM'].columns[1][1:]

输出:

1)“时间”被正确读取为datetime.time对象

In [23]: Time[0].value
Out[23]: datetime.time(9, 30)

In [24]: type(Time[0].value)
Out[24]: datetime.time

2)但是“价格”时间序列,读作浮点数,似乎被截断了......

In [25]: Price[0].value
Out[25]: 205.85

In [26]: type(Price[0].value)
Out[26]: float

In [27]: Price[17].value
Out[27]: 206.18

In [28]: Price[17].value < 206.18
Out[28]: False

而不是206.1799,这也是Excel中显示的方式(单元格B19)。

任何解决方案? 谢谢你的关注。

2 个答案:

答案 0 :(得分:1)

没有使用SELECT T1.image FROM ( SELECT image FROM carphotos ORDER BY ordering LIMIT 3 -- select lowest 3 ) T1 ORDER BY rand() LIMIT 1 --select one of lowest 3 的原因?

pandas

答案 1 :(得分:0)

加布里埃莱,

语法sheet_by_name对我不起作用,所以我认为它必须在2.3.1中过时。我使用时代码有效:

IBM_wb1 = wb1.get_sheet_by_name('IBM')

您可以使用

更新openpyxl版本
pip install openpyxl --upgrade

完成剩下的代码后,我没有遇到任何问题,并且能够输出206.1799。