Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从cx\U Oracle默认数据类型设置正确的pandas.DataFrame数据类型_Python_Pandas_Oracle_Cx Oracle - Fatal编程技术网

Python 从cx\U Oracle默认数据类型设置正确的pandas.DataFrame数据类型

Python 从cx\U Oracle默认数据类型设置正确的pandas.DataFrame数据类型,python,pandas,oracle,cx-oracle,Python,Pandas,Oracle,Cx Oracle,我有一些带有下一个字段数据类型的oracle表: ID| NOT NULL NUMBER VERSION| NOT NULL NUMBER STAT_ACTUAL| NOT NULL NUMBER REGION| NOT NULL VARCHAR2(5 CHAR) PARENTID| NUMBER

我有一些带有下一个字段数据类型的oracle表:

ID|              NOT NULL NUMBER              
VERSION|         NOT NULL NUMBER              
STAT_ACTUAL|     NOT NULL NUMBER              
REGION|          NOT NULL VARCHAR2(5 CHAR)    
PARENTID|                 NUMBER              
CITY|                 VARCHAR2(5 CHAR)    
...
如果我试图将它们从cx_Oracle添加到pandas.DataFrame,就像这样:

import pandas as pd
from sqlalchemy import *

conn = cx_Oracle.connect('datbs/datbs@host/serv')
cursorr = conn.cursor()
SQL  = "select * from table where region = 1"

df= pd.read_sql_query(SQL, con=conn)
数据类型如下所示:

ID                          int64
VERSION                     int64
STAT_ACTUAL                 int64
REGION                     object
PARENTID                    int64
CITY                       object
...
因此,我所有的oracle varchar2(在cx_oracle中看起来是(
'REGION',
)都是pandas.df中的对象

我试图通过以下方式转换它们:

def OutConverter(value):
    if value is None:
        return ''
    return value

def VarToStr(cursor, name, defaultType, size, precision, scale):
    if defaultType in (cx_Oracle.STRING, cx_Oracle.OBJECT):
        return cursor.var(str, size, cursorr.arraysize, outconverter=OutConverter)

conn.outputtypehandler = VarToStr
但结果还没有得到…df.dtypes再次显示对象类型


如何将oracle和cx_oracle数据类型映射到pandas df?

我使用了不正确列的手动转换,如:

newdf = df.astype({"REGION": "Int64", ..., "CITY": "Int32", ...})
输出:

REGION                      int64
CITY                        Int32