首页 > 解决方案 > Python:在 WRDS CRSP 查询中使用多个变量

问题描述

我想在 WRDS SQL 查询中使用多个变量。我正在寻求按 PERMNO 和日期搜索 CRSP 数据库,返回特定公司在特定日期的股票价格。我有一个大型 DataFrame,将从中检索这些变量并用于搜索 CRSP 数据库。

在:

sql_query = """
 SELECT cusip, permno, date, prc
 FROM crsp_a_stock.dsf
 WHERE permno = 12490
 AND date in %(dates)s
 LIMIT 100
 """
 parm = {'dates': tuple([line for line in open('dates.txt', 'r')])}

 df = db.raw_sql(sql_query,  params=parm)
 df

出去:

    cusip       permno   date       prc
0   45920010    12490.0 1996-01-31  108.5

这将根据需要在 1996 年 1 月 31 日输出 IBM (PERMNO 12490) 的数据。我的问题是我还希望能够将 permno 条件链接到一个变量,这样我就可以运行查询并检索每个公司在特定日期的价格数据。

此代码基于此Answer

这可以通过 db.raw_sql 完成吗?我已经搜索了WRDS 帮助站点(特别是向 SQL 传递参数部分),但无法解决这个问题。我对解决方案的细节(例如使用 .txt 输入文件而不是数据框)并不大惊小怪,我只需要能够为多个 WHERE 条件实现变量。如果无法通过 db.raw_sql 实现,是否有任何其他方法可以通过 Python 访问 WRDS 数据库来允许这样做?

感谢您提供任何提示或指示。

标签: pythonsqlpandaswrds

解决方案


推荐阅读