• Saltar al contenido principal
  • Skip to secondary menu
  • Saltar a la barra lateral principal
  • Saltar al pie de página
  • Inicio
  • Secciones
    • Ciencia de datos
    • Criptografía
    • Herramientas
    • Machine Learning
    • Noticias
    • Opinión
    • Productividad
    • Programación
      • JavaScript
      • Julia
      • Matlab
      • Python
      • R
  • Programación
    • JavaScript
    • Julia
    • Matlab
    • Python
    • R
  • Laboratorio
    • Encuestas: Tamaño de Muestra
    • Lotería: Probabilidad de Ganar
    • Reparto de Escaños (D’Hondt)
    • Tres en Raya con IA
  • Noticias
  • Boletín
  • Contacto
  • Tienda
    • Libros
    • Equipamiento de oficina
    • Equipamiento en movilidad
    • Tiendas afiliadas
      • AliExpress
      • Amazon
      • Banggood
      • GeekBuying
      • Lenovo

Analytics Lane

Ciencia e ingeniería de datos aplicada

  • Ciencia de datos
  • Machine Learning
  • IA Generativa
  • Python
  • Pandas
  • NumPy
  • Excel
  • Matlab

Pandas: Convertir una columna en el índice

julio 29, 2021 Por Daniel Rodríguez Deja un comentario
Tiempo de lectura: 4 minutos

pandas

Los DataFrame de Pandas contienen una propiedad especial que son los índices, unos valores inmutables que se asignan a cada una de las filas del conjunto de datos. Al ser inmutables no es posible cambiar un valor específico, pero sí que es posible modificar todos los índices. En esta entrada vamos a ver cómo se pueden convertir una columna en el índice mediante el uso del método set_index().

El método set_index()

Los objetos DataFrame de Pandas cuentan con el método set_index() que tiene la siguiente forma

df.set_index(keys, drop=True, append=False, inplace=False, verify_integrity=False)

en donde las propiedades más importantes son:

  • keys: los nombres de las columnas, pudiendo ser una o varias, que se establecerán como índice del DataFrame.
  • drop: indica si se eliminará la columna del conjunto de datos una vez establecida esta como índice, el valor por defecto es verdadero, por lo que las columnas se eliminarán.
  • append: valor que se indica si la columna se agrega al índice ya existente, por defecto el valor es falso, por lo que el índice actual será reemplazado por la nueva columna.
  • inplace: indica si el método aplica las modificaciones al propio objeto o devuelve una copia modificada del mismo, por defecto el valor es falso, por lo que se obtiene una copia modificada.

Publicidad


Convertir una columna en el índice del DataFrame

Al crear o importar un objeto DataFrame generalmente nos encontramos con la columna de índices que comienza en 0 aumentando una unidad para cada una de las filas. Salvo que se hubiese indicado explícitamente un valor diferente para esta columna.

Curiosidad: El origen del análisis exploratorio de datos y el papel de John Tukey
En Analytics Lane
Curiosidad: El origen del análisis exploratorio de datos y el papel de John Tukey

import pandas as pd

users = {'first_name': ['Montgomery', 'Dagmar', 'Reeba', 'Shalom', 'Broddy', 'Aurelia'],
         'last_name': ['Humes', 'Elstow', 'Wattisham', 'Alen', 'Keningham', 'Brechin'],
         'age': [27, 41, 29, 29, 21, 33],
         'gender': ['Male', 'Female', 'Female', 'Male', 'Male', 'Female']}

df = pd.DataFrame(users)
   first_name  last_name  age  gender
0  Montgomery      Humes   27    Male
1      Dagmar     Elstow   41  Female
2       Reeba  Wattisham   29  Female
3      Shalom       Alen   29    Male
4      Broddy  Keningham   21    Male
5     Aurelia    Brechin   33  Female

En el caso de que deseemos usar valor existente en el DataFrame como índice, por ejemplo un identificador, se puede usar el método set_index() para convertir este. Así se puede usar el nombre de los usuarios para crear un nuevo DataFrame con este valor como índice.

dfi = df.set_index('first_name')
dfi
            last_name  age  gender
first_name                        
Montgomery      Humes   27    Male
Dagmar         Elstow   41  Female
Reeba       Wattisham   29  Female
Shalom           Alen   29    Male
Broddy      Keningham   21    Male
Aurelia       Brechin   33  Female

Nótese que en el nuevo conjunto de datos se ha eliminado la columna original. En el caso de que esto no sea esto lo que se desee, es decir, si queremos conservar la columna en el objeto resultante, solamente se tiene que asignar el valor falso a la propiedad drop.

dfi = df.set_index('first_name', drop=False)name')
dfi
            first_name  last_name  age  gender
first_name                                    
Montgomery  Montgomery      Humes   27    Male
Dagmar          Dagmar     Elstow   41  Female
Reeba            Reeba  Wattisham   29  Female
Shalom          Shalom       Alen   29    Male
Broddy          Broddy  Keningham   21    Male
Aurelia        Aurelia    Brechin   33  Female

Convertir varias columnas en el índice del DataFrame

El método set_index() también puede admitir la opción de varias columnas para crear el índice. Para conseguir esto en lugar de una cadena de texto con el nombre de la columna se tiene que pasar como parámetro una lista con el nombre de las columnas a usar. Así se puede crear un nuevo índice usando el nombre y los apellidos de los usuarios.

dfi = df.set_index(['first_name', 'last_name'])
dfi
                      age  gender
first_name last_name             
Montgomery Humes       27    Male
Dagmar     Elstow      41  Female
Reeba      Wattisham   29  Female
Shalom     Alen        29    Male
Broddy     Keningham   21    Male
Aurelia    Brechin     33  Female

Observados que en este caso los índices pasan a ser una lista de tuplas.

dfi.index
MultiIndex([('Montgomery',     'Humes'),
            (    'Dagmar',    'Elstow'),
            (     'Reeba', 'Wattisham'),
            (    'Shalom',      'Alen'),
            (    'Broddy', 'Keningham'),
            (   'Aurelia',   'Brechin')],
           names=['first_name', 'last_name'])

Otra forma de conseguir índices múltiples es agregando una nueva columna a los que ya existen. Lo que se puede conseguir asignando el valor verdadero a la propiedad append.

dfi = df.set_index('first_name', append=True)
dfi
              last_name  age  gender
  first_name                        
0 Montgomery      Humes   27    Male
1 Dagmar         Elstow   41  Female
2 Reeba       Wattisham   29  Female
3 Shalom           Alen   29    Male
4 Broddy      Keningham   21    Male
5 Aurelia       Brechin   33  Female

Publicidad


Realizando las operaciones en memoria

Al trabajar con DataFrame pequeños, como los del ejemplo, no es un problema crear una copia con las modificaciones. Pero esto no es así cuando se trabaja con conjuntos de datos más grandes. Para evitar problemas de memoria en estos casos se puede asignar el valor verdadero a la propiedad inplace, por lo que el objeto original se modificará y el método no devolverá ningún valor.

df.set_index('first_name', inplace=True)
df
            last_name  age  gender
first_name                        
Montgomery      Humes   27    Male
Dagmar         Elstow   41  Female
Reeba       Wattisham   29  Female
Shalom           Alen   29    Male
Broddy      Keningham   21    Male
Aurelia       Brechin   33  Female

En este caso es importante tener cuidado con lo que se hace, ya que la operación no se podrá deshacer al modificarse el conjunto de datos original y no existir una copia en memoria.

Conclusiones

En esta entrada se ha visto cómo usar el método set_index() para convertir una o varias columnas en el índice de un DataFrame. Permitiendo de esta manera modificar los valores de esta propiedad tan importante de los objetos de Pandas. La semana que viene veremos el proceso complementario a este: convertir los índices en una o varias columnas.

¿Te ha parecido de utilidad el contenido?

¡Puntúalo entre una y cinco estrellas!

Puntuación promedio 5 / 5. Votos emitidos: 2

Ya que has encontrado útil este contenido...

¡Síguenos en redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?

Publicidad


Publicaciones relacionadas

  • Curiosidad: El origen del análisis exploratorio de datos y el papel de John Tukey
  • Cómo calcular el tamaño de la muestra para encuestas
  • Curiosidad: La Ley de Twyman y la trampa de los datos “interesantes”
  • Copias de seguridad automáticas en SQL Server con rotación de archivos
  • Curiosidad: La Paradoja de Simpson, o por qué no siempre debes fiarte de los promedios
  • Error npm ERR! code EACCES al instalar paquetes en Node.js: Cómo solucionarlo paso a paso
  • Curiosidad: La maldición de la dimensionalidad, o por qué añadir más datos puede empeorar tu modelo
  • ¿Está concentrado el MSCI World? Un análisis con Gini, Lorenz y leyes de potencia
  • Curiosidad: ¿Por qué usamos p < 0.05? Un umbral que cambió la historia de la ciencia

Publicado en: Python Etiquetado como: Pandas

Interacciones con los lectores

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

I accept the Terms and Conditions and the Privacy Policy

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Barra lateral principal

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las publicaciones.

Política de Privacidad

Analytics Lane en redes sociales

  • Amazon
  • Bluesky
  • Facebook
  • GitHub
  • Instagram
  • Mastodon
  • Pinterest
  • RSS
  • Telegram
  • Tumblr
  • Twitter
  • YouTube

Publicidad

Entradas recientes

Curiosidad: ¿Por qué usamos p < 0.05? Un umbral que cambió la historia de la ciencia

octubre 2, 2025 Por Daniel Rodríguez

¿Está concentrado el MSCI World? Un análisis con Gini, Lorenz y leyes de potencia

septiembre 30, 2025 Por Daniel Rodríguez

Curiosidad: La maldición de la dimensionalidad, o por qué añadir más datos puede empeorar tu modelo

septiembre 25, 2025 Por Daniel Rodríguez

Publicidad

Es tendencia

  • Curiosidad: ¿Por qué usamos p publicado el octubre 2, 2025 | en Ciencia de datos, Opinión
  • Gráficos de barras en Matplotlib publicado el julio 5, 2022 | en Python
  • Conjunto de datos sintéticos duplicados Realizar la misma modificación en varias hojas de cálculo con Excel publicado el septiembre 23, 2020 | en Herramientas
  • Método del codo (Elbow method) para seleccionar el número óptimo de clústeres en K-means publicado el junio 9, 2023 | en Ciencia de datos
  • Diferencia entre R2 y R2 ajustado en modelos de regresión publicado el marzo 8, 2024 | en Ciencia de datos

Publicidad

Lo mejor valorado

4.9 (24)

Seleccionar filas y columnas en Pandas con iloc y loc

4.6 (16)

Archivos JSON con Python: lectura y escritura

4.4 (14)

Ordenación de diccionarios en Python mediante clave o valor

4.7 (13)

Operaciones de filtrado de DataFrame con Pandas en base a los valores de las columnas

4.5 (10)

Diferencias entre var y let en JavaScript

Publicidad

Comentarios recientes

  • Daniel Rodríguez en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • Pepe en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • CARLOS ARETURO BELLO CACERES en Justicio: La herramienta gratuita de IA para consultas legales
  • Piera en Ecuaciones multilínea en Markdown
  • Daniel Rodríguez en Tutorial de Mypy para Principiantes

Publicidad


Footer

Analytics Lane

  • Acerca de Analytics Lane
  • Boletín de noticias
  • Contacto
  • Libros
  • Lo más popular
  • Noticias
  • Tienda
  • Tiendas afiliadas

Secciones

  • Ciencia de datos
  • Criptografía
  • Herramientas
  • Machine Learning
  • Opinión
  • Productividad
  • Programación
  • Reseñas

Sobre de Analytics Lane

En Analytics Lane tratamos de explicar los principales conceptos de la ciencia e ingeniería de datos con un enfoque práctico. Los principales temas tratados son ciencia de datos, ingeniería de datos, inteligencia artificial, machine learning, deep learning y criptografía. Además, también se habla de los principales lenguajes de programación y herramientas utilizadas por los científicos e ingenieros de datos.

Copyright © 2018-2025 Analytics Lane ·Términos y condiciones ·Política de Cookies ·Política de Privacidad ·Herramientas de privacidad ·Contacto