Предположим, что ваш DataFrame изначально содержит "обычный" (одноуровневый) индекс по столбцам:
patterns responses patterns.1 responses.1 patterns.2 responses.2
0 hello hi Where? here When? there
Обратите внимание, что Pandas, например, при чтении DataFrame из файла CSV , по умолчанию добавляет числа к столбцам с повторяющимися именами, но для нас потребуются только первые 2 (без суффикса numeri c).
Обратите внимание, что заголовки столбцов на добавленном (верхнем) уровне не должны быть таким же. Чтобы иметь возможность различать последовательные пары столбцов, я назвал их Q1 , Q2 и т. Д.
Чтобы иметь MultiIndex для столбцов, вы можете действовать следующим образом:
cols = df.columns
nPairs = len(cols) // 2
h1 = [ f'Q{i}' for i in range(1, nPairs + 1) ]
df.columns = pd.MultiIndex.from_product([h1, cols[:2]])
Результат:
Q1 Q2 Q3
patterns responses patterns responses patterns responses
0 hello hi Where? here When? there
Другие возможности для создания MultiIndex, например, from_arrays и from_tuples . Прочтите о них и практикуйтесь во время обучения Pandas.
Редактировать после вопроса в комментарии
Одна из возможных причин вашего исключения заключается в том, что ваш входной файл содержит:
- Индексный столбец, возможно, без имени.
- Затем количество пар столбцов ( шаблоны / ответы ).
Затем, если вы читаете его с помощью read_csv , вы должны приказать «преобразовать» этот столбец в индекс:
df = pd.read_csv('Input.csv', index_col=[0])
Затем количество «фактических» столбцы будут на единицу меньше, поэтому мой код должен работать без исключения.