如何从数据库和本地数据框使用 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)
使用 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)