首页 > 解决方案 > 在 WRDS CRSP 查询中使用来自外部文件的 Python dict 值

问题描述

我想从外部文件(Python dict)中读取字典值(CRSP PERMNOS),并将它们用于从特定表返回行的函数中。下面的代码改编自 WRDS Python 支持站点,可以很好地与内联编写的 PERMNO 值配合使用。

def main():
    parm = {'permnos': ('22074', '20482', '10049', '19641', '18980')}
    data = db.raw_sql('SELECT date,permno,comnam,cusip FROM crsp.dseall WHERE permno in %(permnos)s', params=parm)
    data.to_csv(r'cusip-result-2.csv')
    print(data)
if __name__=="__main__":
    main()

但是,我有541个 PERMNOS,并且希望避免手动内联输入它们!

感谢您的任何提示或指示!

标签: pythonwrds

解决方案


首先,将每个 permnos 写入一个名为 permnos.txt 的文件,格式如下:

22074
20482
...
18980

然后您可以执行以下操作:

def main():
    parm = {'permnos': tuple([line for line in open('permnos.txt', 'r')])}
    data = db.raw_sql('SELECT date,permno,comnam,cusip FROM crsp.dseall WHERE permno in %(permnos)s', params=parm)
    data.to_csv(r'cusip-result-2.csv')
    print(data)
if __name__=="__main__":
    main()

推荐阅读