使用Pandas读取精确的表定义

时间:2018-04-02 17:19:54

标签: python pandas

尝试使用Pandas导入数据库表以进行数据分析。我有一个包含多列的源表,如下所示:

ID float NOT NULL, 
Name varchar(36) NOT NULL,
Address varchar(100)

当我将其拉入数据框并运行以下内容时:

df.info()

我明白了:

ID float64
Name object
Address object

有没有办法让它读取确切的数据定义?即" varchar(36)"而不是"对象"。

这是从Teradata表读取,如果这有所不同

由于

2 个答案:

答案 0 :(得分:1)

据我所知,这是不可能的。 varchar数据类型仅存在于Teradata数据库系统中,并且一旦将其拉入DataFrame,就会转换为合理的pandas数据类型(strunicode)。

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中,就我的知识而言,你没有固定或半固定大小的字符串(你可以使用固定大小的格式进行打印)。