从 cx_Oracle 个默认数据类型中设置正确的 pandas.DataFrame 个数据类型
Set correct pandas.DataFrame datatypes from cx_Oracle default data types
我有一些 oracle table 下一个字段数据类型:
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', <class 'cx_Oracle.STRING'>
))都是 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
我有一些 oracle table 下一个字段数据类型:
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', <class 'cx_Oracle.STRING'>
))都是 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