如何从数据库和本地数据框使用 Pandas 到 select?

How to use Pandas to select from database and local dataframe?

使用 SAS,我通常使用 proc sql 来创建从数据库读取的数据集。稍后我可以再次使用 proc sql 从数据库和我创建的第一个本地数据集进行查询。

如何在 Python(使用 Pandas)中做到这一点?

在 SAS 中说,我 运行:

proc sql;
create table work.dataset1 as
select * from dbtable1;
run;

然后我可以使用这个数据集继续查询我的数据库,如:

proc sql;
create table work.dataset2 as
select a.*, b.* from work.dataset1 a, dbtable2 b;
run;

我Python我有这个代码:

df1 = pd.read_sql_query("select * from dbtable1", conn)

并希望能够在以后的查询中引用 df1,例如:

df2 = pd.read_sql_query("select a.*, b.* from df1 a, dbtable2 b", conn)

但这似乎不起作用。

有谁知道如何使用 Python/Pandas 完成此操作?

非常感谢!

pd.read_sql_query 将无法执行此操作。您可以先 运行 对数据库进行 SQL 查询以从 dbtable2 创建数据框对象,然后使用 pandas 方法对多个数据框进行 运行 查询。

还有一个名为 pandasql 的 Python 库,它允许您使用 SQL 语法查询 pandas 数据帧。所以在你的情况下,它将是:

import pandas as pd
import pandasql as ps

df1 = pd.read_sql_query("select * from dbtable1", conn)
df2 = pd.read_sql_query("select * from dbtable2", conn)

pysqldf = lambda q: ps.sqldf(q, globals())
q = """select a.*, b.* from df1 a, df2 b;"""
final_df = pysqldf(q)