Считывание Excel файлов для получения MultiIndex заголовков

Задача - правильно считать файл Excel, который содержит таблицу с многострочным заголовком. Пример используемых данных.

Для считывания использую следующий подход:

param = pd.read_excel('parameters.xlsx', header=[0,1], index_col = 0)

В результате получается следующая структура:

введите сюда описание изображения

Вопрос - как считать таблицу или организовать ее в Excel правильно для того, чтобы можно было использовать MultiIndex?

В частности, сделать колонку Asset индексом для lookup функции, а Unnamed:1_level_1 убрать.


Ответы (1 шт):

Автор решения: MaxU
df = pd.read_excel(r"C:\download\parameters.xlsx", header=[0,1], index_col=0)
df = df.rename(columns=lambda col: "" if str(col).startswith("Unnamed:") else col, level=1)

результат:

In [151]: df
Out[151]:
   Asset      2020                       2021
                 1       2         3        1       2        3
0      1  101.0800  106.40  111.7200  105.925  111.50  117.075
1     23   82.5075   86.85   91.1925   78.394   82.52   86.646
2     25   42.9400   45.20   47.4600   41.154   43.32   45.486
3     30    0.0000    0.00    0.0000    0.000    0.00    0.000
4     32    0.0000    0.00    0.0000    0.000    0.00    0.000
..   ...       ...     ...       ...      ...     ...      ...
35    42    0.0000    0.00    0.0000    0.000    0.00    0.000
36    34    0.0000    0.00    0.0000    0.000    0.00    0.000
37    37    0.0000    0.00    0.0000    0.000    0.00    0.000
38    10    2.8400    2.84    2.8400    2.190    2.19    2.190
39     8    0.3700    0.37    0.3700    0.340    0.34    0.340

[40 rows x 7 columns]

In [152]: df.columns
Out[152]:
MultiIndex([('Asset', ''),
            (   2020,  1),
            (   2020,  2),
            (   2020,  3),
            (   2021,  1),
            (   2021,  2),
            (   2021,  3)],
           )
→ Ссылка