当我这样做时
from sqlalchemy import create_engine
import pandas as pd
engine = create_engine('sqlite://')
conn = engine.connect()
conn.execute("create table test (a float)")
for _ in range(5):
conn.execute("insert into test values (NULL)")
df = pd.read_sql_query("select * from test", engine)
#df = pd.read_sql_table("test", engine)
df.a
结果是一列None
值,而不是float("nan")
。这非常令人讨厌,特别是如果您以chunk方式读取具有NULL值的float列。
read_sql_table
版本工作正常,因为我认为它可以使用类型信息。
我是否可以轻松调整read_sql_query
以将NULL
值解释为float("nan")
?
答案 0 :(得分:0)
根据wesm在链接页面中的评论,似乎an issue被引发了类似的东西 - componentOne
参数 - 被添加到版本0.7.2中的pandas:
hi arthur,我添加了一个选项coerce_float(在上面的提交中),它转换了Decimal - >使用NaN浮动并填充无。将Decimal转换为float仍然非常慢。将成为0.7.2的一部分即将发布
虽然pandas.read_sql_query 0.18.1 docs中的描述似乎令人困惑:
coerce_float:boolean,默认为True
尝试将值转换为非字符串,非数字对象(如decimal.Decimal)为浮点,对SQL结果集很有用