我有一個包含幾種股票,股票指數,固定收益工具和貨幣(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