Я инициализирую мультииндекс в начале моего кода. Различные функции способствуют его заполнению.
Одна из них (в другом месте кода) инициализирует его с нуля. Чтобы сделать это, я в основном создаю новый DataFrame, но повторно использую форму, которую я инициализировал в начале моего кода.
Так что код работает не очень хорошо, он выглядит так:
# Beginning of the code, initialization of `summary`.
c_array = [['Index', 'Index'],['First', 'Last']]
cmidx = pd.MultiIndex.from_arrays(c_array)
rmidx = pd.MultiIndex(levels=[[],[]],
codes=[[],[]],
names=['CDE','Period'])
summary = pd.DataFrame(index=rmidx, columns=cmidx)
# Function that re-initializes `summary`,
# keeping its original shape, columns name, and so on...
# New labels
index_label = [('a','b'),('c','d')]
# New values
values = [[20,30],[40,50]]
# New `summary`
summary = pd.DataFrame(values,
index = summary.index.reindex(index_labels),
columns = summary.columns)
сводка
Index
First Last
((a, b), (c, d)) 20 30
(-1, -1) 40 50
Я ожидал сохранить имена и иметь (c, d)
как ярлыки для второго ряда, например:
Index
CDE Period First Last
a b 20 30
c d 40 50
Пожалуйста, кто-то знает, какую ошибку я совершаю? Я благодарю вас за вашу помощь, Bests!
EDIT
Кажется, что-то не так с тем, как я сначала инициализирую мультииндекс.
Один способ, который работает ( но это вынуждает меня заново создать мультииндекс и иметь названия уровней)
rmidx = pd.MultiIndex.from_tuples(index_label, names=['CDE', 'Period'])
summary = pd.DataFrame(values, index = rmidx,
columns = summary.columns)
>>> Index
First Last
CDE Period
a b 20 30
c d 40 50
В этом случае
summary.index
>>> MultiIndex([('a', 'b'),
('c', 'd')],
names=['CDE', 'Period'])
Спасибо за любую помощь!