Pandas 'read_sql` создает целочисленные столбцы при чтении из таблицы Oracle, которая имеет числовые столбцы с десятичными точками - PullRequest
1 голос
/ 28 мая 2020

У меня есть таблица Oracle со столбцами типа VARCHAR2 (т.е. строка) и типа NUMBER (т.е. числовое c значение с дробной частью). И столбцы numeri c действительно содержат значения с десятичными точками, а не целочисленные значения.

Однако, когда я читаю эту таблицу во фрейм данных Pandas через pandas.read_sql, я получаю столбцы numeri c в фрейм данных как int64. Как я могу этого избежать и вместо этого получать float столбцы с полными десятичными значениями?

Я использую следующие версии

python           : 3.7.4.final.0
pandas           : 1.0.3
Oracle           : 18c Enterprise Edition / Version 18.9.0.0.0

1 Ответ

0 голосов
/ 06 августа 2020

Я столкнулся с тем же самым. Я не уверен, является ли это причиной, но я предполагаю, что тип NUMBER без каких-либо ограничений по размеру слишком велик для pandas и автоматически усекается до int64 или тип неправильно выбран pandas - по умолчанию NUMBER можно рассматривать как целое число. Вы можете ограничить тип столбца, например, NUMBER(5,4) и pandas должны правильно распознавать его как float.

Я также обнаружил, что использование pd.read_sql дает мне правильные типы в отличие от pd.read_sql_table .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...