Использовать значения определенных строк в качестве имен столбцов

У меня есть несколько данных, которые выглядят так:

        0  1  2  3  4  5
Groupe  1  2  3  4  5  6
1       3  6  8  6  8  9
2       5  5  2  1  1   0.1
3       7  2  8  1.9 11 2.1
4       1  2  1  1.1  2  1

Таким образом, имена столбцов [0, 1, 2, 3, 4, 5], но я хотел бы поставить значения Groupe строка как имя столбца, потому что это интересно в контексте, который я анализирую данные. Ремарк: значения Groupe строка может измениться, поэтому это не обязательно 1, 2, 3. поэтому решение не может быть таким же тривиальным, как добавление +1 к фактическим именам столбцов.

желаемый вывод для приведенного выше кадра данных:

       1  2  3  4  5  6
1       3  6  8  6  8  9
2       5  5  2  1  1   0.1
3       7  2  8  1.9 11 2.1
4       1  2  1  1.1  2  1

Итак, как я могу изменить имена столбцов для значений некоторой строки?

1 ответ

Решение

Если строка Groupe это первый ряд df, вы можете сначала установить имена столбцов по первой строке, выбранной iloc, а затем преобразовать его в int от astype, удалить имя столбца и последний удалить первый ряд DataFrame с [1:]:

df.columns = df.iloc[0,:].astype(int)
df.columns.name= None
print (df[1:])
   1  2  3    4   5    6
1  3  6  8  6.0   8  9.0
2  5  5  2  1.0   1  0.1
3  7  2  8  1.9  11  2.1
4  1  2  1  1.1   2  1.0

Другое решение с loc а также drop, строка Groupe в df может быть где угодно, а не только первым:

df.columns = df.loc['Groupe',:].astype(int)
df.columns.name= None
df = df.drop('Groupe')
print (df)
   1  2  3    4   5    6
1  3  6  8  6.0   8  9.0
2  5  5  2  1.0   1  0.1
3  7  2  8  1.9  11  2.1
4  1  2  1  1.1   2  1.0
Другие вопросы по тегам