如何生成SeriesEntry对象序列传入get_unified_series函数?
问题解决:生成SeriesEntry对象序列替代字符串列表
问题描述
现有如下代码,需要传入多个SeriesEntry对象实例到mda.get_unified_series()函数中:
for n in results[:10]: data_frame = mda.get_unified_series( SeriesEntry('nyse_vl'), SeriesEntry('useqin0016'), ...... ).to_pd_data_frame()
由于有成千上万个ticker需要处理,手动逐个编写SeriesEntry不现实,于是编写了如下函数,但返回的是字符串列表而非对象实例:
def produce_list(list): final =[] for n in list: final.append("SeriesEntry(" + "'" + n + "'" +')') return final
返回结果示例:
["SeriesEntry('nyse_vl')", "SeriesEntry('useqin0016')", ..... ]
实际需要的是SeriesEntry对象实例序列:
SeriesEntry('nyse_vl'), SeriesEntry('useqin0016'), .....
解决方案
你的函数错误地生成了字符串,直接创建SeriesEntry对象实例即可,无需拼接字符串。修改后的函数如下:
def produce_list(ticker_list): final = [] for ticker in ticker_list: # 直接创建SeriesEntry对象并添加到列表 final.append(SeriesEntry(ticker)) return final
或者用更简洁的列表推导式写法:
def produce_list(ticker_list): return [SeriesEntry(ticker) for ticker in ticker_list]
调用方式
生成对象列表后,使用*运算符解包列表,将每个对象作为独立参数传入get_unified_series():
for n in results[:10]: # 假设你的ticker列表是tickers entry_list = produce_list(tickers) data_frame = mda.get_unified_series(*entry_list).to_pd_data_frame()
内容的提问来源于stack exchange,提问作者oldradishsoip
相关产品推荐
相关产品推荐

