Я читаю данные из файла Excel в pandas DataFrame, используя read_excel()
.К сожалению, кажется, что трудно обеспечить форматирование ячеек в Excel, и получается, что таблица, подобная этой:
2018 2019
a b a b
0 1.295666 -0.544973 0.845973 -0.874668
1 0.590123 0.284364 -1.482706 -0.859350
2 0.832228 0.469992 0.994865 0.480301
3 0.098671 0.198643 0.878323 -0.119761
... на самом деле имеет удивительные индексы или столбцы:
df.columns
MultiIndex(levels=[[2018, 2019, '2019'], ['a', 'b']],
labels=[[0, 0, 1, 2], [0, 1, 0, 1]])
Как видите, первичный индекс последнего столбца на самом деле имеет строку для 2019, а не целое число, как остальные.
Чтобы быть в безопасности, я хотел бы преобразовать все индексы в str
ing, но панды не позволят мне:
df.columns.set_levels(df.columns.levels[0].astype(str), level=0)
ValueError: Level values must be unique: ['2018', '2019', '2019'] on level 0
Я вижу два подхода для решения этой проблемы:
- Пусть
read_excel()
преобразовать заголовки столбцов в строку или - Получите
set_levels()
, как в моем примере выше, чтобы работать.
Но я не могузаставить либо работать - какие-нибудь намеки?