Проверьте этот ответ: https://stackoverflow.com/a/24988227/9404057. Этот метод распаковывает ключи и значения словаря и преобразует данные в легко обрабатываемый формат для мультииндексных фреймов данных.Обратите внимание, что если вы используете python 3.5+, вам нужно будет использовать .items()
вместо .iteritems()
, как показано в связанном ответе:
>>>>import pandas as pd
>>>>reform = {(firstKey, secondKey, thirdKey): values for firstKey, middleDict in md.items() for secondKey, innerdict in middleDict.items() for thirdKey, values in innerdict.items()}
>>>>df = pd.DataFrame(reform)
Чтобы изменить тип данных col1 и col на int
и float
, затем вы можете использовать pandas.DataFrame.rename () и указать любые значения, которые вы хотите:
df.rename({'col1':1, 'col2':2.5}, axis=1, level=2, inplace=True)
Кроме того, если вы предпочитаете иметь уровнив индексе, а не в столбцах, вы также можете использовать pandas.DataFrame.T
Если вы хотите восстановить свой словарь из этого MultiIndex, вы можете сделать что-то вроде этого:
>>>>md2={}
>>>>for i in df.columns:
if i[0] not in md2.keys():
md2[i[0]]={}
if i[1] not in md2[i[0]].keys():
md2[i[0]][i[1]]={}
md2[i[0]][i[1]][i[2]]=tuple(df[i[0]][i[1]][i[2]].values)