2

我有一个 Oracle 表,其中包含类型VARCHAR2(即字符串)和类型NUMBER(即带有小数部分的数值)的列。并且数字列确实包含带小数点的值,而不是整数值。

但是,当我通过将这个表读入 Pandas数据框时pandas.read_sql,我将数据框中的数字列接收为int64. 如何避免这种情况并接收float具有完整十进制值的列?

我正在使用以下版本

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

1 回答 1

0

我也遇到过同样的事情。我不确定这是否是原因,但我认为NUMBER没有任何大小限制的类型对于 pandas 来说太大了,它会自动截断int64或 pandas 选择不正确的类型——默认值NUMBER可能被视为整数。您可以将列的类型限制为 egNUMBER(5,4)并且 pandas 应该将其正确识别为浮点数。

我还发现 usingpd.read_sql为我提供了与pd.read_sql_table.

于 2020-08-06T08:21:08.903 回答