Сначала ваши данные должны быть в такой форме:
{column_1: {(l0_index_0, l1_index_0): value,
(l0_index_0, l1_index_1): value,
(l0_index_1, l1_index_0): value...
},
column_2: {l0_index_0...
}
...
}
Например:
data = {'LB': {('Brisbane v Port Adelaide', 'Brisbane'): 1, ('Brisbane v Port Adelaide', 'Port Adelaide'): 2,
('Fremantle v St Kilda', 'Fremantle'): 3, ('Fremantle v St Kilda', 'St Kilda'): 4},
'PB': {('Brisbane v Port Adelaide', 'Brisbane'): 5, ('Brisbane v Port Adelaide', 'Port Adelaide'): 6,
('Fremantle v St Kilda', 'Fremantle'): 7, ('Fremantle v St Kilda', 'St Kilda'): 8},
'SB': {('Brisbane v Port Adelaide', 'Brisbane'): 9, ('Brisbane v Port Adelaide', 'Port Adelaide'): 10,
('Fremantle v St Kilda', 'Fremantle'): 11, ('Fremantle v St Kilda', 'St Kilda'): 12},
'NEDS': {('Brisbane v Port Adelaide', 'Brisbane'): 13, ('Brisbane v Port Adelaide', 'Port Adelaide'): 14,
('Fremantle v St Kilda', 'Fremantle'): 15, ('Fremantle v St Kilda', 'St Kilda'): 16},
}
pd.DataFrame(data)
Выход:
LB PB SB NEDS
Brisbane v Port Adelaide Brisbane 1 5 9 13
Port Adelaide 2 6 10 14
Fremantle v St Kilda Fremantle 3 7 11 15
St Kilda 4 8 12 16
Соответственно, поскольку ваши входные данные находятся в четырех отдельных фреймах данных, необходимо будет каким-то образом объединить их для соблюдения этого формата.
Используя LB_data
, определенный в вопросе, мы можем определить простую функцию для преобразования ее в данные необходимого формата:
def transform(d):
keys = list(d)
combined = ' v '.join(keys)
return {(combined, key): value for key, value in d.items()}
pd.DataFrame({'LB': {k: v for datum in LB_data for k, v in transform(datum).items()}})
Что дает это:
LB
Brisbane v North Melbourne Brisbane 1.95
North Melbourne 1.85
Carlton v Port Adelaide Carlton 5.00
Port Adelaide 1.16
Essendon v St Kilda Essendon 1.32
St Kilda 3.30
Fremantle v Gold Coast Fremantle 1.32
Gold Coast 3.30
Geelong Cats v Melbourne Geelong Cats 1.57
Melbourne 2.36
Greater Western Sydney v West Coast Eagles Greater Western Sydney 2.75
West Coast Eagles 1.44
Hawthorn v Western Bulldogs Hawthorn 1.38
Western Bulldogs 3.00
Выполнив ту же операцию с другими наборами входных данных и объединив результаты, вы можете получить кадр данных ожидаемого формата.