Считывание 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)],
)
