Data Science

Modificación eficiente de celdas en DataFrames de Pandas usando índices

Spread the love

Los DataFrames de Pandas son una piedra angular de la manipulación de datos en Python. Frecuentemente, necesitarás modificar celdas individuales dentro de tu DataFrame. Este artículo explora tres métodos eficientes para lograr esto usando el índice del DataFrame.

Tabla de Contenido

  1. Establecer valores de celda con .at
  2. Establecer valores de celda con .loc
  3. El método .set_value() obsoleto

Establecer valores de celda con .at

El accesor .at ofrece una manera altamente eficiente de acceder y modificar una sola celda en un DataFrame usando sus etiquetas de fila y columna. Su velocidad lo hace ideal para asignaciones de un solo valor.


import pandas as pd

# DataFrame de ejemplo
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6]}
df = pd.DataFrame(data, index=['A', 'B', 'C'])

# Establecer el valor de la celda en la fila 'B' y la columna 'col1' a 10
df.at['B', 'col1'] = 10

print(df)

Esto mostrará:


   col1  col2
A     1     4
B    10     5
C     3     6

.at está optimizado para velocidad y simplicidad cuando se trabaja con celdas individuales. Sin embargo, intentar asignar múltiples valores resultará en un TypeError.

Establecer valores de celda con .loc

El accesor .loc proporciona mayor flexibilidad. Permite indexación basada en etiquetas para filas y columnas y puede manejar asignaciones de valores individuales o matrices a múltiples celdas simultáneamente.


import pandas as pd

# DataFrame de ejemplo
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6]}
df = pd.DataFrame(data, index=['A', 'B', 'C'])

# Establecer el valor de la celda en la fila 'A' y la columna 'col2' a 100
df.loc['A', 'col2'] = 100

print(df)

# Establecer múltiples valores
df.loc[['A', 'B'], 'col1'] = [5, 15]  #Asigna 5 a A y 15 a B
print(df)

Esto mostrará primero:


   col1  col2
A     1   100
B     2     5
C     3     6

Y luego:


   col1  col2
A     5   100
B    15     5
C     3     6

.loc es el método más versátil, adecuado tanto para actualizaciones de una sola celda como para escenarios más complejos que involucran múltiples filas y columnas. Si bien es versátil, para cambios en una sola celda, .at es generalmente más rápido.

El método .set_value() obsoleto

El método .set_value() está obsoleto en las versiones más nuevas de Pandas. Si bien podría seguir funcionando en versiones anteriores, se recomienda encarecidamente usar .at o .loc para una mejor compatibilidad y rendimiento. Evite usar .set_value() en código nuevo.

En resumen, tanto .at como .loc ofrecen maneras efectivas de modificar celdas individuales en un DataFrame de Pandas. Prefiera .at por su velocidad y simplicidad con valores únicos, y .loc por su flexibilidad al trabajar con múltiples celdas o modificaciones más complejas.

Deja una respuesta

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