【发布时间】:2020-11-16 21:06:25
【问题描述】:
我在德国计算机上使用 DataFrame.read_sql_query 和 SQLite 时遇到问题:根据数字的本地设置,十进制字符是逗号 ',' 而不是点 '。'
使用 CSV 和 pandas,很容易在函数 read_csv 和 to_csv 中使用 decimal 参数将十进制字符设置为 ','。
但是我在sql函数read_sql/read_sql_query中缺少这个参数。当我从我的 SQL 表中读取浮点值时,pandas 将返回对象而不是浮点数。
示例: 这是我在 SQLite 中的表。
CREATE TABLE myvalues (
p_id INTEGER NOT NULL,
time INTEGER NOT NULL,
y FLOAT NOT NULL);
我使用 sqlite3 和 pandas 来读取 'y' 中的值:
dns_sqlite = r'db\dm.output.sqlite3'
conn_sqlite = sqlite3.connect(dns_sqlite)
df = pd.read_sql_query("select * from myvalues, conn_sqlite)
DataFrame 的头部是:
p_id time y
0 61 1575272655947000000 0,299893262748943
1 60 1575272655947000000 0,325854761161171
2 57 1575272655947000000 0,323828854628018
3 62 1575272655947000000 0,310302948951226
4 58 1575272655947000000 0,32878052447951
dtypes 是:
p_id int64
time int64
y object
dtype: object
您可以看到y 的类型是“object”而不是“float”。
我不明白问题出在哪里。是因为pandas,它没有使用我电脑的本地设置吗?还是 sqlite3 模块负责?
我做错了什么?
【问题讨论】:
-
实际上我只是使用 python sqlite 进行测试来读取表 myvalues 并再次将浮点值作为字符串获取。所以问题似乎来自sqlite3。是否有可能告诉 sqlite3 使用 ',' 而不是 '.'?