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
- Establecer valores de celda con
.at
- Establecer valores de celda con
.loc
- 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.