Сохраните список результатов списка из запроса SQL в фрейме данных Pandas с соответствующей строкой из фрейма данных - PullRequest
0 голосов
/ 08 мая 2019

У меня есть несколько запросов SQL, хранящихся в файле Excel.

The original SQL Scripts

Я хотел бы запустить их в заданной базе данных SQL, а затем сохранить результаты запроса SQL, а также исходный фрейм данных в отдельном фрейме данных.

from sqlalchemy import create_engine
import pymssql
engine = create_engine('connection string')

Сначала я попытался просто сохранить результаты во временном фрейме данных, который работает нормально. Каждый из этих SQL-запросов дает 3-4 строки вывода.

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)

The results dataframe

Но цель - сохранить результат вместе с соответствующим запросом / строкой. Приведенное ниже, очевидно, неверно, поскольку цикл хранит результаты только за последние 3 раза

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)

Incorrect Merge Results

1 Ответ

0 голосов
/ 08 мая 2019

Рассмотрим создание списка фреймов данных с соответствующим ID (предполагается, что он уникален для каждой строки). Затем concat для одного выхода и, наконец, merge с исходным фреймом данных на ID .

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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...