Pandas Dataframe agrega encabezado sin reemplazar el encabezado actual

¿Cómo puedo agregar un encabezado a un DF sin reemplazar el actual? En otras palabras, solo quiero cambiar el encabezado actual hacia abajo y agregarlo al dataframe como otro registro.

* pregunta secundaria: ¿Cómo agrego tablas (ejemplo del dataframe) a la pregunta de stackoverflow?

Tengo esto (encabezado de la nota y cómo se acaba de agregar como una fila:

0.213231 0.314544 0 -0.952928 -0.624646 1 -1.020950 -0.883333 

Necesito esto (todos los demás registros se desplazan hacia abajo y se agrega un nuevo registro) (también: no pude leer el csv correctamente porque estoy usando s3_text_adapter para la importación y no pude averiguar cómo tener un argumento que ignora el encabezado similar a pandas read_csv):

  AB 0 0.213231 0.314544 1 -1.020950 -0.883333 

Otra opción es agregarlo como un nivel adicional del índice de columna, para convertirlo en un MultiIndex:

 In [11]: df = pd.DataFrame(randn(2, 2), columns=['A', 'B']) In [12]: df Out[12]: AB 0 -0.952928 -0.624646 1 -1.020950 -0.883333 In [13]: df.columns = pd.MultiIndex.from_tuples(zip(['AA', 'BB'], df.columns)) In [14]: df Out[14]: AA BB AB 0 -0.952928 -0.624646 1 -1.020950 -0.883333 

Esto tiene la ventaja de mantener los tipos de datos correctos para el DataFrame, de modo que aún puede hacer cálculos rápidos y correctos en su DataFrame, y le permite acceder a los nombres de columna antiguos y nuevos.

.

Para completar, aquí está DSM’s (respuesta eliminada), haciendo de las columnas una fila, lo cual, como ya se mencionó, generalmente no es una buena idea:

 In [21]: df_bad_idea = df.T.reset_index().T In [22]: df_bad_idea Out[22]: 0 1 index AB 0 -0.952928 -0.624646 1 -1.02095 -0.883333 

Tenga en cuenta que el tipo de dtype puede cambiar (si se trata de nombres de columnas en lugar de valores adecuados) como en este caso … así que tenga cuidado si realmente planea hacer algo al respecto ya que probablemente será más lento e incluso puede fallar:

 In [23]: df.sum() Out[23]: A -1.973878 B -1.507979 dtype: float64 In [24]: df_bad_idea.sum() # doh! Out[24]: Series([], dtype: float64) 

Si los nombres de las columnas son en realidad una fila que se confundió con una fila de encabezado, debe corregir esto al leer los datos (por ejemplo, read_csv use header=None ).