Actualmente tengo un marco de datos que se parece a esto:
Unnamed: 1 Unnamed: 2 Unnamed: 3 Unnamed: 4
0 Sample Number Group Number Sample Name Group Name
1 1.0 1.0 s_1 g_1
2 2.0 1.0 s_2 g_1
3 3.0 1.0 s_3 g_1
4 4.0 2.0 s_4 g_2
Estoy buscando una forma de eliminar la fila de encabezado y hacer que la primera fila sea la nueva fila de encabezado, por lo que el nuevo marco de datos se vería así:
Sample Number Group Number Sample Name Group Name
0 1.0 1.0 s_1 g_1
1 2.0 1.0 s_2 g_1
2 3.0 1.0 s_3 g_1
3 4.0 2.0 s_4 g_2
He intentado cosas en la línea de if 'Unnamed' in df.columns:
luego hacer el marco de datos sin el encabezado, df.to_csv(newformat,header=False,index=False)
pero parece que no estoy llegando a ninguna parte.
Si quieres un one-liner, puedes hacer:
df.rename(columns=df.iloc[0]).drop(df.index[0])
fuente
La respuesta de @ostrokach es la mejor. Lo más probable es que desee mantenerlo en todas las referencias al marco de datos, por lo que se beneficiaría de inplace = True.
df.rename(columns=df.iloc[0], inplace = True) df.drop([0], inplace = True)
fuente
Aquí hay un truco simple que define los índices de columna "en su lugar". Debido a que
set_index
establece los índices de fila en su lugar, podemos hacer lo mismo para las columnas transponiendo el marco de datos, configurando el índice y transponiéndolo de nuevo:df = df.T.set_index(0).T
Tenga en cuenta que puede que tenga que cambiar la
0
deset_index(0)
si sus filas tienen un índice diferente ya.fuente
Otro resumen usando el intercambio de Python:
df, df.columns = df[1:] , df.iloc[0]
Esto no restablecerá el índice
Aunque, lo contrario no funcionará como se esperaba
df.columns, df = df.iloc[0], df[1:]
fuente
- otra forma de hacer esto
df.columns = df.iloc[0] df = df.reindex(df.index.drop(0)).reset_index(drop=True) df.columns.name = None Sample Number Group Number Sample Name Group Name 0 1.0 1.0 s_1 g_1 1 2.0 1.0 s_2 g_1 2 3.0 1.0 s_3 g_1 3 4.0 2.0 s_4 g_2
Si te gusta, presiona la flecha hacia arriba. Gracias
fuente
header = table_df.iloc[0] table_df.drop([0], axis =0, inplace=True) table_df.reset_index(drop=True) table_df.columns = header table_df
fuente
La mejor práctica y el mejor OneLiner :
df.to_csv(newformat,header=1)
Observe el valor del encabezado:
El encabezado se refiere a los números de fila que se utilizarán como nombres de columna. No se equivoque, el número de fila no es el df sino del archivo de Excel (0 es la primera fila, 1 es la segunda y así sucesivamente).
De esta manera, obtendrá el nombre de columna que desea y no tendrá que escribir códigos adicionales o crear un nuevo df.
Lo bueno es que deja caer la fila reemplazada.
fuente