In [21]: df = pd.DataFrame([(1,2,3), ('foo','bar','baz'), (4,5,6)])
In [22]: df
Out[22]:
0 1 2
0 1 2 3
1 foo bar baz
2 4 5 6
Configure las etiquetas de las columnas para que sean iguales a los valores de la segunda fila (ubicación del índice 1):
In [23]: df.columns = df.iloc[1]
Si el índice tiene etiquetas únicas, puede quitar la segunda fila usando:
In [24]: df.drop(df.index[1])
Out[24]:
1 foo bar baz
0 1 2 3
2 4 5 6
Si el índice no es único, puede usar:
In [133]: df.iloc[pd.RangeIndex(len(df)).drop(1)]
Out[133]:
1 foo bar baz
0 1 2 3
2 4 5 6
El uso df.drop(df.index[1])
elimina todas las filas con la misma etiqueta que la segunda fila. Debido a que los índices no únicos pueden generar obstáculos (o errores potenciales) como este, a menudo es mejor tener cuidado de que el índice sea único (aunque Pandas no lo requiera).