如何最好地构造多个股票的多个时间序列?

时间:2019-04-30 03:32:04

标签: pandas

我是熊猫世界的新手,并且正在尝试找出构造数据框架的最佳做法,以对金融时间序列进行各种时间计算。

我当前正在导入定价时间序列,如下所示:

data_frames = { }
START_DATE = '2000-01-01'
TICKERS = [ 'SPY', 'VWO', 'TLT']

for ticker in TICKERS:
  data_frames[ticker] = pdr.get_data_tiingo( ticker, start = START_DATE, api_key='xxxxxxxx' )

导入后,data_frames ['SPY']的前几列如下:

                         adjClose     adjHigh      adjLow     adjOpen  adjVolume  \
symbol date                                                                    
SPY    2000-01-03  101.407597  103.368638  100.318130  103.368638    8164300   
       2000-01-04   97.441937  100.448866   97.365652  100.078415    8089800   
       2000-01-05   97.616251   98.683897   95.698789   97.572673   12177900   
       2000-01-06   96.047419   98.662140   96.047419   97.354779    6227200 

如果我要随后进行比较时间序列的计算,那么建议将三种股票的时间序列合并的推荐方法是什么?我的第一个想法是我应该将数据帧与

连接
dfs_concat = pd.concat( [data_frames['SPY'], data_frames['VWO'], data_frames['TLT']] )

然后使用Apply功能

dfs_concat.apply( some_cross_asset_calculation_here, axis = 1 )

但是在some_cross_asset_calculation_here()内部,我可以访问一个代码的数据框行,而不能访问其他代码的数据框行。

我想我可以在一个数据框中为每个股票创建列,这样我就有了诸如SPY_adjClose,SPY_adjOpen,TLT_adjClose,TLT_adjOpen之类的列。但这感觉不太正确。

感觉我必须缺少一种明显的方法来最好地处理数据。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以将索引级别symbol作为分类变量放到列中

df = data_frames.drop_index(level='symbols')

然后,您可以根据该列(df[df['type''] == 'SPY'])选择数据,或按组(df.groupby('type').apply(som_func)或“对于名称,df.groupby('type):...中的组”)执行操作。 )。

这在索引轴上也应该可行,但我更喜欢将其存储在列中