IIUC, вы можете просто использовать pd.concat()
и передать свой список фреймов данных и ключи для вас в результате фрейма данных MultiIndex.Возьмите следующие образцы данных:
import pandas as pd
df1 = pd.DataFrame([
['2018-03-11', 'SPH0', 'SP', '2020-03-20', 'CME:Index and Options Market'],
['2018-03-12', 'SPH0', 'SP', '2020-03-20', 'CME:Index and Options Market'],
['2018-03-15', 'SPH0', 'SP', '2020-03-20', 'CME:Index and Options Market'],
['2018-03-23', 'SPH0', 'SP', '2020-03-20', 'CME:Index and Options Market'],
['2018-03-24', 'SPH0', 'SP', '2020-03-20', 'CME:Index and Options Market']],
columns=['closingDate', 'RIC', 'RICRoot', 'ExpirationDate', 'Exchange'])
df2 = pd.DataFrame([
['2018-03-15', 'HAB3', 'HA', '2020-03-20', 'CME:Index and Options Market'],
['2018-03-16', 'HAB3', 'HA', '2020-03-20', 'CME:Index and Options Market'],
['2018-03-22', 'HAB3', 'HA', '2020-03-20', 'CME:Index and Options Market'],
['2018-03-24', 'HAB3', 'HA', '2020-03-20', 'CME:Index and Options Market'],
['2018-03-20', 'HAB3', 'HA', '2020-03-20', 'CME:Index and Options Market']],
columns=['closingDate', 'RIC', 'RICRoot', 'ExpirationDate', 'Exchange'])
df3 = pd.DataFrame([
['2018-03-15', 'UHA6', 'UH', '2020-03-20', 'CME:Index and Options Market'],
['2018-03-16', 'UHA6', 'UH', '2020-03-20', 'CME:Index and Options Market'],
['2018-03-18', 'UHA6', 'UH', '2020-03-20', 'CME:Index and Options Market'],
['2018-03-20', 'UHA6', 'UH', '2020-03-20', 'CME:Index and Options Market'],
['2018-03-21', 'UHA6', 'UH', '2020-03-20', 'CME:Index and Options Market']],
columns=['closingDate', 'RIC', 'RICRoot', 'ExpirationDate', 'Exchange'])
Теперь вызовите pd.concat()
:
pd.concat([df1, df2, df3], keys=['SPH0','HAB3','UHA6'])
Выход:
closingDate ... Exchange
SPH0 0 2018-03-11 ... CME:Index and Options Market
1 2018-03-12 ... CME:Index and Options Market
2 2018-03-15 ... CME:Index and Options Market
3 2018-03-23 ... CME:Index and Options Market
4 2018-03-24 ... CME:Index and Options Market
HAB3 0 2018-03-15 ... CME:Index and Options Market
1 2018-03-16 ... CME:Index and Options Market
2 2018-03-22 ... CME:Index and Options Market
3 2018-03-24 ... CME:Index and Options Market
4 2018-03-20 ... CME:Index and Options Market
UHA6 0 2018-03-15 ... CME:Index and Options Market
1 2018-03-16 ... CME:Index and Options Market
2 2018-03-18 ... CME:Index and Options Market
3 2018-03-20 ... CME:Index and Options Market
4 2018-03-21 ... CME:Index and Options Market
Вы также можете использовать понимание списка для созданиясписок фреймов данных для передачи на pd.concat()
, например:
my_keys = ['SPH0','HAB3','UHA6']
dfs = [create_df(key) for key in my_keys]
pd.concat(dfs, keys=my_keys)
Где функция create_df()
возвращает фрейм данных.