循环遍历列表以从 SQL 查询创建多个数据帧
Posted
技术标签:
【中文标题】循环遍历列表以从 SQL 查询创建多个数据帧【英文标题】:Looping over a list to create multiple data frames from SQL queries 【发布时间】:2022-01-20 03:18:21 【问题描述】:我有一个 SQLite 查询,我想多次运行以根据感兴趣的年份创建多个 Pandas 数据框。像这样的东西(但这绝对行不通)。基本上,我试图在year
列表上循环创建数据框以创建 4 个数据框(每年 1 个),即使经过相当多的谷歌搜索,我现在仍然无法做到这一点。
year = [2018, 2019, 2020, 2021]
query = '''
SELECT
some stuff
FROM table
WHERE table.YEAR = ?
'''
for x in year:
df[x] = pd.read_sql_query(query, db, params=[x])
【问题讨论】:
【参考方案1】:在 for 循环的每次迭代中都创建一个新的数据框是个坏主意。 原因有很多,最突出的是:
创建的名称可能很容易与您的逻辑已使用的变量发生冲突。
由于名称是动态创建的,因此您通常还需要使用动态技术来检索数据。
因此,您可以为此目的使用dictionary
。
我从this 帖子中得到了这些报价。
您可以这样做: 注意:我使用了一个具有代表性的示例,其中使用了我拥有的示例 SQL 表。
数据如下:
您的代码将如下所示:
query = '''
SELECT
*
FROM books
WHERE id = id;
'''
d =
for i in id:
sql = query.format(id = i)
temp = pd.read_sql_query(sql, db_connection)
d[i] = pd.DataFrame(temp)
您可以使用索引访问字典中的数据框。
【讨论】:
谢谢!您的解决方案就像一个魅力。我也遇到了您链接到的帖子,但不太理解所说的内容,并认为我的 SQL 查询可能是使我的情况有所不同的罪魁祸首之一。对我来说最重要的时刻是字典可以包含数据框。这使它们比我意识到的更强大。以上是关于循环遍历列表以从 SQL 查询创建多个数据帧的主要内容,如果未能解决你的问题,请参考以下文章