Использовать значения определенных строк в качестве имен столбцов
У меня есть несколько данных, которые выглядят так:
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