【发布时间】:2019-03-23 01:11:39
【问题描述】:
我对 python 很陌生,在网上阅读了几篇文章后,我不知道如何继续。我有一个 3.56 gig CSV 文件,我正在尝试使用 python 中的 pandas 和 sqlalchemy 包将其子集到多个数据帧中。
我使用以下代码将 CSV 文件转换为数据库,现在我正在尝试查询数据库并将结果存储在名为 test 的数据框中。但是,每当我执行底部的代码时,都会出现以下错误:OperationalError: (sqlite3.OperationalError) near "table": syntax error [SQL: 'SELECT COL1, COL6, COL7 FROM table where COL1 = 2001'] (Background on this error at: http://sqlalche.me/e/e3q8)
我还尝试通过在 SQL 查询中使用 "SELECT* FROM table where COL1 = 2000" 来选择数据库中的所有列。但是,它返回相同的错误。
import pandas as pd
from sqlalchemy import create_engine
file = "/Users/benalbert/Desktop/Econ522/usa_00001.csv"
csv_database = create_engine("sqlite:///csv_database.db")
chunksize = 1000
i = 0
j = 1
for df in pd.read_csv(file, chunksize=chunksize, iterator=True):
df = df.rename(columns={c: c.replace(' ', '') for c in df.columns})
df.index += j
i+=1
df.to_sql('table', csv_database, if_exists='append')
j = df.index[-1] + 1
test = pd.read_sql_query('SELECT COL1, COL6, COL7 FROM table where COL1 =
2001', csv_database)
当第 1 列的值为 2001 时,所需的输出是仅包含来自第 1、6 和 7 列的观测值的新数据框。
【问题讨论】:
-
愚蠢的问题:你的桌子真的叫“桌子”吗?
标签: python database pandas subset