У меня есть вложенный словарь, и я хочу сделать его для строк и столбцов multiIndex, как показано ниже. Но мои данные как-то теряются в таблице.
test= {12: {'Category 1': {'TestA': {'att_1': 1, 'att_2': 'whatever'}, 'TestB': {'att_1': 3, 'att_2': 'spring'}}, 'Category 2': {'TestA': {'att_1': 23, 'att_2': 'another'}, 'TestB': {'att_1': 9, 'att_2': 'summer'}}}, 15: {'Category 1': {'TestA': {'att_1': 10, 'att_2': 'foo'}, 'TestB': {'att_1': 29, 'att_2': 'fall'}}, 'Category 2': {'TestA': {'att_1': 30, 'att_2': 'bar'}, 'TestB': {'att_1': 36, 'att_2': 'winter'}}}}
columns=pd.MultiIndex.from_arrays([['TestA','TestA','TestB','TestB'],['att_1','att_2','att_1','att_2']])
Формат, который я хочу:
TestA TestB
att_1 att_2 att_1 att_2
12 Category 1 NaN NaN NaN NaN
Category 2 NaN NaN NaN NaN
15 Category 1 NaN NaN NaN NaN
Category 2 NaN NaN NaN NaN
И я сделал
pd.DataFrame(test,index=pd.MultiIndex.from_arrays([[12,12,15,15],['Category 1','Category 2','Category 1','Category 2']]),columns=pd.MultiIndex.from_arrays([['TestA','TestA','TestB','TestB'],['att_1','att_2','att_1','att_2']]))
Мои данные теряются, как показано ниже:
TestA TestB
att_1 att_2 att_1 att_2
12 Category 1 NaN NaN NaN NaN
Category 2 NaN NaN NaN NaN
15 Category 1 NaN NaN NaN NaN
Category 2 NaN NaN NaN NaN
Если бы у меня были только строки multiIndex, это работало бы, но мне нужны строки и столбцы multiIndex.
pd.DataFrame.from_dict({(i,j): test[i][j]
for i in test.keys()
for j in test[i].keys()},
orient='index')
TestA TestB
12 Category 1 {'att_1': 1, 'att_2': 'whatever'} {'att_1': 3, 'att_2': 'spring'}
Category 2 {'att_1': 23, 'att_2': 'another'} {'att_1': 9, 'att_2': 'summer'}
15 Category 1 {'att_1': 10, 'att_2': 'foo'} {'att_1': 29, 'att_2': 'fall'}
Category 2 {'att_1': 30, 'att_2': 'bar'} {'att_1': 36, 'att_2': 'winter