我是SQLite和Python的新手,并且在这个主题中加入了圈子。
我导入一个SQLite表 SQL Table Column Data Type进入Python
使用代码
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吗?
答案 0 :(得分:2)
如果列包含至少一个不是float的值,Pandas将返回一个包含dtype object
列的DataFrame。例如,字符串 - 甚至是空字符串 - 将强制整个列为对象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