我有一个包含几种股票,股票指数,固定收益工具和货币(AAPL,AORD等)的关闭价格的Python字典,使用DATE索引。词典中的不同DF具有不同的长度,即一些时间序列比其他时间序列长。所有的DF都有相同的字段,即。 '关'。在DATE索引上合并多个pandas dfs时间序列,并将其包含在Python字典中
字典的长度是可变的。我如何通过DATE索引将所有DF合并为一个DF,还可以使用lsuffix =我正在阅读的文件的部分名称和特征? (例如,AAPL_CLOSE.csv文件中有一个日期&一个CLOSE场,但在合并后的DF其他“关闭”来区分,它的名称应该是AAPL_CLOSE)
这是我有:
asset_name = []
files_to_test = glob.glob('*_CLOSE*')
for name in files_to_test:
asset_name.append(name.rsplit('_', 1)[0])
将返回:
asset_name = ['AAPL', 'AORD', 'EURODOLLAR1MONTH', 'NGETF', 'USDBRL']
files_to_test = ['AAPL_CLOSE.csv',
'AORD_CLOSE.csv',
'EURODOLLAR1MONTH_CLOSE.csv',
'NGETF_CLOSE.csv',
'USDBRL_CLOSE.csv']
然后:
asset_dict = {}
for name, file in zip(asset_name, files_to_test):
asset_dict[name] = pd.read_csv(file, index_col = 'DATE', parse_dates = True)
这是我想概括的小函数,在DATE中通过使用lsuffix = asset_list中的元素创建字典中所有DF的大合并。
merged = asset_dict['AAPL'].join(asset_dict['AORD'], how = 'right', lsuffix ='_AAPL')
由于长度不匹配,DF会有很多N/A,但我会在稍后处理。
请参阅http://stackoverflow.com/questions/23787072/python-pandas-join-dataframes-on-index – scomes
谢谢。你指出的问题与切线相关;它并没有解决多个dfs在同一时间合并,而是成对的问题。 –
只需将它们合并成一个一个。合并的方式通常是书面的。始终保持一个“主”数据框(首先这只是第一个数据框),然后将其他数据合并到一个数据框中。 – scomes