Python Pandas中的数据类型与SQL中的数据类型不同的原因
我是SQLite和Python的新手,在这个话题上有很多圈子 我导入一个SQLite表 变成巨蟒 使用代码Python Pandas中的数据类型与SQL中的数据类型不同的原因,python,sqlite,Python,Sqlite,我是SQLite和Python的新手,在这个话题上有很多圈子 我导入一个SQLite表 变成巨蟒 使用代码 conn = sqlite3.connect("C:\\SQLite\\aaa.sqlite") df=pd.read_sql(sql="select * from C",con=conn,coerce_float=True) 当我在Python中检查数据类型时。 有些是物体 df.dtypes WD float64 Manpower
conn = sqlite3.connect("C:\\SQLite\\aaa.sqlite")
df=pd.read_sql(sql="select * from C",con=conn,coerce_float=True)
当我在Python中检查数据类型时。
有些是物体
df.dtypes
WD float64
Manpower float64
2nd object
CTR object
2ndU float64
T1 object
T2 object
T3 object
T4 object
T5 object
你知道为什么Python会将一些列从float64转换为Object吗?如果列至少包含一个非float的值,Pandas将返回一个数据帧,其中的列为dtype
Object
。例如,字符串(即使是空字符串)将强制整个列为object dtype:
import sqlite3
import numpy as np
import pandas as pd
filename = '/tmp/test.sqlite'
with sqlite3.connect(filename) as conn:
cursor = conn.cursor()
cursor.execute('DROP TABLE IF EXISTS C')
cursor.execute('CREATE TABLE C (CTR float)')
sql = 'INSERT INTO C VALUES (?)'
args = [(x, ) for x in np.random.random(5)] + [('',)]
cursor.executemany(sql, args)
df = pd.read_sql(sql="SELECT * FROM C",
con=conn, coerce_float=True)
print(df)
# CTR
# 0 0.1205763
# 1 0.5859016
# 2 0.9511995
# 3 0.08459435
# 4 0.8094845
# 5
print(df.dtypes)
屈服
CTR object
dtype: object