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

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

        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

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


person Amanda    schedule 05.06.2016    source источник


Ответы (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
person jezrael    schedule 05.06.2016