Подключение к .accdb в Python и чтение таблицы через pandas

Я просто пытаюсь подключиться к .accdb и читать в существующей таблице. Я использую pypypodbc для подключения:

import pandas as pd
import pypyodbc

conn = pypyodbc.connect(
    r"Driver={Microsoft Access Driver (*.mdb, *.accdb)};"
    r"Dbq=C:\Users\Public\Data.accdb;")

Кажется, что соединение работает, и я могу читать в большинстве таблиц, используя:

data = pd.read_sql('SELECT * FROM TABLE', conn)

Однако, когда я пытаюсь прочитать таблицу со столбцом, содержащим значения Double с различными десятичными точками (но без нулей), я получаю следующее:

ValueError: не удалось преобразовать строку в число с плавающей запятой: b'E-2'

Как я могу получить эти данные для панд?


person Gman    schedule 03.08.2015    source источник
comment
Сообщение об ошибке сообщает вам, что столбец содержит значение «E-2» ... Возможно ли, что Access разрешает это в столбце с плавающей запятой?   -  person maxymoo    schedule 04.08.2015
comment
Тип столбца двойной, поэтому он не должен допускать никаких текстовых значений. Я также выполнил поиск «E-2», которого, похоже, не существует, однако есть некоторые научные обозначения, в которых значение может заканчиваться на E-02. может ли это быть частью проблемы?   -  person Gman    schedule 04.08.2015
comment
хм, да, это определенно может быть причиной, проверьте эту ветку форума pcreview.co.uk/threads/   -  person maxymoo    schedule 04.08.2015
comment
Спасибо за это, оказывается, что это действительно была проблема. Чтобы обойти проблему, мне пришлось уменьшить количество знаков после запятой, умножив данные на какой-то коэффициент, преобразовав в intiiger, разделив на тот же коэффициент и снова преобразовав в double.   -  person Gman    schedule 04.08.2015