首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用数据帧中的适当行将SQL查询的列表结果列表存储在Pandas dataframe中

用数据帧中的适当行将SQL查询的列表结果列表存储在Pandas dataframe中
EN

Stack Overflow用户
提问于 2019-05-07 21:07:12
回答 1查看 729关注 0票数 0

我在Excel文件中存储了一些SQL查询。

我想在给定的SQL数据库上运行它们,然后将SQL查询和原始数据帧的结果存储在一个单独的数据框架中。

代码语言:javascript
复制
from sqlalchemy import create_engine
import pymssql
engine = create_engine('connection string')

首先,我尝试将结果存储在一个工作良好的临时数据框架中。这些SQL查询中的每一个都提供3-4行输出。

代码语言:javascript
复制
df_result = pd.DataFrame()
for row in df.itertuples(): 
    df_temp = pd.read_sql(row.SQL_Query, engine) 
    df_result = df_result.append(df_temp)

但目标是存储结果及其关联的查询/行。下面的内容显然是错误的,因为循环存储的结果只有最后3次。

代码语言:javascript
复制
df_result = pd.DataFrame()
for row in df.itertuples(): 
    df_temp = pd.read_sql(row.SQL_Query, engine) 
    df_result = pd.merge(df, df_temp, left_index=True, right_index=True)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-07 21:15:54

考虑构建具有相应ID的数据帧列表(假定每一行都是唯一的)。然后对单个输出进行concat,最后在ID上使用原始数据帧的merge

代码语言:javascript
复制
df_list = [pd.read_sql(row.SQL_Query, engine).assign(ID=row.ID) for row in df.itertuples()]

sql_df = pd.concat(df_list)

df_result = pd.merge(df, sql_df, on="ID")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56030482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档