Не работает функция при перечислении индексов датафрейма

Хочу создать функцию, в которую буду передавать несколько параметров, один из которых- перечисление индексов датафрейма.

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
from openpyxl import workbook
from openpyxl import load_workbook

df = pd.read_excel('Свод.xlsx', sheet_name='Результаты')
df_columns = pd.read_excel('Свод.xlsx', sheet_name='Результаты', usecols=df.iloc[:,97:129])

a = df['КАБИНЕТ']
df_columns.reindex = a

def opisatelnie(kabineti, sheetnames, name_of_histogram, path):
    a = df_columns.loc[kabineti].describe(include = 'all')
    for col in a.columns:
        plt.figure(figsize=(8, 5))
        N, bins, patches = plt.hist(df[col], edgecolor='yellow')
        jet = plt.get_cmap('Greys', len(patches))
        for i in range(len(patches)):
            patches[i].set_facecolor(jet(i))
        plt.title(name_of_histogram.format(str(col)))
        plt.draw()
        plt.savefig(path.format(
                str(col)))
        plt.close()

opisatelnie(['com',     'com1',     'com2-cd',  'c-2'], 'Вся сфера', "{}, Вся сфера.png", "C:/Users/Zed/Desktop/Work/Нормализация/ИТОГИ/Сфера вся/Вся сфера/{}, Все сферы.png" )

Но получаю ошибку:

KeyError: "None of [Index(['com',   'com1',     'com2-cd',  'c-2',\n      dtype='object')] are in the [index]"

Были попытки исправить, но ничего не вышло; индексы точно содержатся в датафрейме. Помогите: в чем моя ошибка?

Пример входных данных:

        П1  П2  П3  П4  П5  П6  П7
com     24  28  8   11  14  38  27
com2    30  17  24  21  21  29  29
com3    34  33  23  16  22  25  17
com1    22  15  20  16  26  27  19
com1    32  27  20  14  22  35  19
com     20  9   20  15  21  38  27
com2-cd 17  25  28  24  23  31  23
c-2     40  30  20  9   17  29  13
com     25  23  17  17  25  29  19
c-2     34  28  12  9   22  22  17
com     40  33  17  9   27  35  11
com     28  35  24  15  18  28  20
com2-cd 30  26  13  10  18  23  22
c-2     32  32  21  24  24  23  16
c-2     34  15  11  5   20  22  31
com2-cd 21  38  22  20  14  35  28
c-2     38  24  33  35  32  30  5
c-3     44  17  6   8   30  27  17
c-4     14  14  28  15  19  29  23
c-5     30  29  25  19  19  33  21
com2-cd 30  25  16  10  30  36  17

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

Автор решения: CrazyElf

Вижу как минимум такую ошибку:

df_columns.reindex = a

Конечно, Python позволяет всякое, в том числе присваивать что угодно функциям, в результате чего потом возникают загадочные ошибки, но правильно функцию reindex использовать так:

df_columns.reindex(a)

Можно и с помощью присваивания сделать переиндексацию (и обычно так и делают), но тогда надо использовать index, а не reindex:

df_columns.index = a

Скорее всего у вас не произошла переиндексация df из-за этой ошибки, а остальные ошибки уже следствие этого.

→ Ссылка
Автор решения: MarianD

Я думаю — не зная ничего о вашем df_columns — что вместо вашего

a = df_columns.loc[kabineti].describe(include = 'all')

нужно писать

a = df.loc[kabineti].describe(include = 'all')

(Значит, df вместо df_columns.)

→ Ссылка