У меня есть следующий словарь, который я хочу преобразовать в мультииндекс (для столбцов) DataFrame:
fdict = {}
fdict['apple'] = {}
fdict['banana'] = {}
fdict['apple']['green'] = 5
fdict['apple']['red'] = 3
fdict['banana']['light_yellow'] = 10
fdict['appraisal round'] = 1
fdict
{'apple': {'green': 5, 'red': 3},
'banana': {'light_yellow': 10},
'appraisal round': 1}
Мне удалось преобразовать его в мультииндекс (для столбцов) DataFrame, который я хочу получить следующим образом:
import numpy as np
import pandas as pd
fruit_array = []
quality_array = []
values_array = []
for key in [key for key in fdict.keys() if key != 'appraisal round']:
keys = fdict[key].keys()
fr_array = np.repeat(key,len(keys))
fruit_array.extend(fr_array)
quality_array.extend(keys)
val_array = fdict[key].values()
values_array.extend(val_array)
columns_index = pd.MultiIndex.from_arrays([fruit_array,quality_array])
df = pd.DataFrame(data=np.reshape(values_array,(1,len(values_array))),columns=columns_index,index=[fdict['appraisal round']])
df
apple banana
green red light_yellow
1 5 3 10
У меня есть одна конкретная c проблема, связанная с этим методом, которая заключается в том, что (насколько я понимаю) словари специально не упорядочены (если вы не используете и не упорядочиваете слова, которые я предпочитаю не использовать здесь), и я вывожу данные в al oop в массивы, порядок которых важен для построения результирующего DataFrame. Мне нужен метод, который поддерживает целостность канала данных, не полагаясь на тот факт, что данные будут извлечены в правильном порядке.
Итак, есть ли предпочтительный метод, который явно поддерживает отношения ключ-пара значений в словаре при создании DataFrame из него? Кроме того, было бы замечательно меньше строк кода.
Спасибо!