尝试使用Pandas导入数据库表以进行数据分析。我有一个包含多列的源表,如下所示:
ID float NOT NULL,
Name varchar(36) NOT NULL,
Address varchar(100)
当我将其拉入数据框并运行以下内容时:
df.info()
我明白了:
ID float64
Name object
Address object
有没有办法让它读取确切的数据定义?即" varchar(36)"而不是"对象"。
这是从Teradata表读取,如果这有所不同
由于
答案 0 :(得分:1)
据我所知,这是不可能的。 varchar
数据类型仅存在于Teradata数据库系统中,并且一旦将其拉入DataFrame,就会转换为合理的pandas数据类型(str
或unicode
)。
pandas,numpy和python中数据类型的概述:http://pbpython.com/pandas_dtypes.html
答案 1 :(得分:1)
pandas依赖于numpy数据类型。
访问related part of the pandas docs,其中包含更多相关信息,但我会从那里复制所有类型:
[numpy.generic,
[[numpy.number,
[[numpy.integer,
[[numpy.signedinteger,
[numpy.int8,
numpy.int16,
numpy.int32,
numpy.int64,
numpy.int64,
numpy.timedelta64]],
[numpy.unsignedinteger,
[numpy.uint8,
numpy.uint16,
numpy.uint32,
numpy.uint64,
numpy.uint64]]]],
[numpy.inexact,
[[numpy.floating,
[numpy.float16, numpy.float32, numpy.float64, numpy.float128]],
[numpy.complexfloating,
[numpy.complex64, numpy.complex128, numpy.complex256]]]]]],
[numpy.flexible,
[[numpy.character, [numpy.bytes_, numpy.str_]],
[numpy.void, [numpy.record]]]],
numpy.bool_,
numpy.datetime64,
numpy.object_]]
最重要的是,我看不到任何支持显示类似varchar(#)的dtype。处理字符串的默认设置是为他们提供dtype" object"在熊猫框架中。
在Python中,就我的知识而言,你没有固定或半固定大小的字符串(你可以使用固定大小的格式进行打印)。