¿Cómo establecer en pandas la primera columna y fila como índice?

2 minutos de lectura

Avatar de usuario de Oli
oli

Cuando leo en un CSV, puedo decir pd.read_csv('my.csv', index_col=3) y establece la tercera columna como índice.

¿Cómo puedo hacer lo mismo si tengo un marco de datos de pandas en la memoria? ¿Y cómo puedo decir que use la primera fila también como índice? La primera columna y fila son cadenas, el resto de la matriz es un número entero.

  • Lo siento, ¿estás después? set_index? esto establecerá una columna como índice para una fila, tendría que anular el índice directamente df.index = df.iloc[0].values tenga en cuenta que la longitud de la fila debería coincidir con el número actual de filas en su df

    – EdChum

    13/04/2016 a las 18:51


  • Gracias EdChum, tu respuesta me ayudó mucho. En mi caso no fue df.index, fue df.columns. Y para las filas necesitaba usar set_index. Gracias.

    – Olí

    13 abr 2016 a las 22:55

  • @Oli ¿Podría valer la pena dejar una respuesta, ya que no ha aceptado ninguna de las respuestas actuales?

    – tommy.carstensen

    14 de enero de 2018 a las 3:29

Avatar de usuario de Y. Yazarel
Y. Yazarel

Puedes probar esto independientemente del número de filas.

df = pd.read_csv('data.csv', index_col=0)

  • Esta es en realidad la solución más fácil.

    – ling

    23 de marzo de 2019 a las 18:15

  • De acuerdo, esta es la mejor solución cuando se usan archivos CSV

    – Ricardo B.

    4 de junio de 2019 a las 9:43

  • La pregunta ya menciona esto y pide específicamente en memoria DataFrames.

    – villasv

    6 de febrero de 2020 a las 16:50


Hacer que la primera (o n-ésima) columna sea el índice en orden creciente de detalle:

df.set_index(list(df)[0])
df.set_index(df.columns[0])
df.set_index(df.columns.tolist()[0])

Haciendo de la primera (o n-ésima) fila el índice:

df.set_index(df.iloc[0].values)

Puede usar ambos si desea un índice de varios niveles:

df.set_index([df.iloc[0], df.columns[0]])

Observe que usar una columna como índice automáticamente la dejará caer como columna. Usar una fila como índice es solo una operación de copia y no eliminará la fila del DataFrame.

¿Tal vez intente set_index ()?

df = df.set_index([2])

  • set_index espera etiquetas de columna. esto aumentará KeyError si su tercera columna tiene un nombre.

    – villasv

    20 de agosto de 2018 a las 18:45


  • En aras de la exhaustividad: si la columna tiene un índice no numérico, debe reemplazar el número con dicho índice no numérico, por ejemplo, df = df.set_index([‘two’]).

    -Rushat Rai

    15 de noviembre de 2018 a las 10:34

tal vez intente df = pd.read_csv(header = 0)

¿Ha sido útil esta solución?