Я хочу прочитать Excel с мультииндексом как в столбцах, так и в строках. Которые являются объединенными ячейками в этом файле Excel.
Я знаю, что pandas предлагает способ читать этот вид рабочего листа, просто записывая такие параметры, как 'header = [0,1,2], index_col = [ 0,1,2,3] », который может автоматически преобразовывать эти заголовки и индекс в мультииндекс в фрейме данных.
Но когда я делаю это таким образом, в моих столбцах появляется много« Безымянный: # ». Поэтому я сначала прочитал его без заголовка индекса, а затем использовал метод fillna для обработки этих. А затем измените обработанные строки и столбцы на df.columns / df.index.
Я успешно установил df.columns, а затем получил фрейм данных в приведенной ниже ссылке (извините, мне не хватает репутации для публикации изображения на этой странице.)
Но возникла проблема, когда я хочу установить столбцы ['Месяц', 'Неделя', 'Имя', 'Задача'] в индекс.
Он возвратил ошибку NotImplementedError:> 1 ndim Категориальные не поддерживаются в настоящее время
Метод set_index просто не работает. Есть ли , чтобы установить определенные столбцы в качестве индекса, когда столбцы уже имеют мультииндекс ?
import re
import os
import pandas as pd
tgt_file = r'C:\some_path\test_input.xlsx'
df = pd.read_excel(tgt_file, header=None, index_col=None)
# I avoided set the dataframe with multiindex when read it from excel by using 'header=[0,1,2],index_col=[0,1,2,3]'
# Cuz I need to read it without header, in order to avoid get too many Unamed: # in the column header
df_header = df[0:3].fillna(method='ffill', axis=0, limit=3)
df.columns = pd.MultiIndex.from_arrays(df_header.values, names=['1st','2nd','3rd'])
df.drop(index=[0,1,2], inplace=True)
df
Тогда я получил такой фрейм данных (извините, у меня нет репутации чтобы вставить картинку.)