В Pandas появляется дубликат столбца с добавлением «.1» к имени

#python #pandas

#python #панды

Вопрос:

С помощью следующего кода для файла .xlsx с мультииндексом в столбцах:

 import pandas as pd

df = pd.read_excel('Total Data.xlsx', header=[0,1], sheet_name="Control (E)")

c = df.xs('Time', drop_level=False, axis=1, level=1).columns

print(c.levels[1])
 

Я получаю следующий результат:

 c.levels[1]
Index([' SV (Nexn)', '%CO2', '%O2', 'CO (Nexn)', 'DBP (Calc)',
       'EtCO2 (Nonin)', 'HR (Calc)', 'HR (Nexn)', 'MAP (Calc)',
       'MAP (Nexn)', 'MV (calc)', 'MV (calc).1', 'RR (Nonin)', 'SBP (Calc)',
       'Subject', 'TV (Calc)', 'Time', 'VO2 (calc)', 'Vi'],
      dtype='object')
 

Похоже, это как-то связано с пустым столбцом, который у меня есть, разделяющим столбцы на уровне 0 (а именно, базовый уровень и этап 1), который впоследствии также разделяет столбцы уровня 1.

Это скриншот многоиндексного заголовка файла Excel: введите описание изображения здесь

Почему MV (calc).1 отображается в виде столбца, когда его на самом деле нет в файле Excel, и как я могу избежать этого?

Ответ №1:

Скорее всего, у вас дважды одно и то же имя столбца в таблице Excel.

Все ключи должны быть уникальными, поэтому Pandas добавляет «.1» в конец второго вхождения повторяющегося имени столбца.

Комментарии:

1. Очевидно, что в level 1 конкретном заголовке multiindex нет дубликатов (базовый уровень, этап 1 и т.д.), Как видно на скриншоте, который я опубликовал. Проблема, по-видимому, заключалась в пустой колонке (затемненной).

2. Разве «MV (Calc)» не повторяется дважды на скриншоте?