Añadir una nueva columna a un DataFrame de Pandas (con ejemplos y buenas prácticas)
Updated on
Añadir nuevas columnas es una de las operaciones más comunes al trabajar con DataFrames de Pandas. Ya sea que estés creando un campo calculado, insertando una columna en una posición específica o construyendo un DataFrame de forma dinámica, Pandas ofrece varias técnicas potentes para lograrlo fácilmente.
Esta guía actualizada para 2025 cubre:
- Los 6 mejores métodos para añadir una nueva columna
- Cuándo usar cada método
- Cómo añadir columnas basadas en datos existentes
- Cómo evitar errores comunes (por ejemplo,
SettingWithCopyWarning) - Ejemplos de uso en el mundo real
⭐ Consejo rápido: convierte tu DataFrame en una herramienta de análisis visual
¿Quieres visualizar tu DataFrame al instante?
PyGWalker convierte cualquier DataFrame de Pandas o Polars en una interfaz interactiva tipo Tableau directamente dentro de Jupyter Notebook.
pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)| Kaggle | Colab | GitHub |
|---|---|---|
| Run PyGWalker in Kaggle (opens in a new tab) | Run in Google Colab (opens in a new tab) | Give us a ⭐️ (opens in a new tab) |
¿Qué es un DataFrame de Pandas?
Un DataFrame es una tabla etiquetada bidimensional (filas + columnas), similar a una hoja de Excel o a tablas SQL. Pandas te permite crear DataFrames a partir de:
- CSV
- Excel
- SQL
- JSON
- Listas y diccionarios de Python
Y proporciona APIs potentes para manipularlos y analizarlos.
📌 Cómo añadir una nueva columna en Pandas (vista rápida)
| Método | Mejor para | Ejemplo |
|---|---|---|
1. Asignación (df['col'] = ...) | Casos más comunes y sencillos | df['salary'] = ... |
2. Insertar columna (df.insert) | Insertar en un índice específico | df.insert(1, 'x', ...) |
3. Assign (df.assign) | Method chaining | df = df.assign(x=...) |
4. Concat (pd.concat) | Añadir muchas columnas de golpe | pd.concat([df, df2], axis=1) |
| 5. Basada en columnas existentes | Transformaciones del mundo real | df['age2'] = df['age'] * 2 |
| 6. Columnas condicionales | Lógica if-else | np.where(...) |
Veamos cada método con ejemplos.
1. Método: asignación simple (el mejor para la mayoría de casos)
df['NewColumn'] = [1, 2, 3, 4]▶ Ejemplo
df['Salary'] = [50000, 60000, 70000, 80000]Cuándo usarlo:
- Método más común y sencillo
- Para añadir valores constantes, listas, arrays o resultados calculados
Notas:
- Sobrescribe la columna si ya existe
- Muy eficiente
2. Método: insertar columna en una posición específica (df.insert)
df.insert(loc=1, column='Department', value=['IT', 'HR', 'Finance', 'Admin'])Úsalo cuando:
- Necesitas un orden de columnas preciso
- Es útil para informes y exportar datos estructurados
3. Método: añadir columna usando assign (estilo funcional / chaining)
df = df.assign(Tax=lambda x: x['Salary'] * 0.1)Ventajas:
- Ideal para method chaining
- No modifica el DataFrame original a menos que lo reasignes
4. Método: añadir columnas usando pd.concat
df2 = pd.DataFrame({'Bonus': [1000, 2000, 2500, 1800]})
df = pd.concat([df, df2], axis=1)Úsalo cuando:
- Estás concatenando varias columnas nuevas
- Quieres combinar dos DataFrames
Evítalo cuando:
- Añades una sola columna → la asignación es más rápida
5. Añadir una columna basada en columnas existentes (ejemplo real)
Este es el caso de uso más frecuente, y suele faltar en muchos artículos.
Ejemplo: crear una puntuación total
df['Total'] = df['Math'] + df['Science'] + df['English']Ejemplo: normalizar un valor
df['Age_Norm'] = df['Age'] / df['Age'].max()6. Columnas condicionales (np.where o máscaras booleanas)
Ejemplo: añadir un indicador de "Senior"
import numpy as np
df['Senior'] = np.where(df['Age'] >= 35, 'Yes', 'No')Versión con máscara booleana
df['IsAdult'] = df['Age'] > 18Úsalo cuando:
- Creas etiquetas de clasificación
- Trabajas con condiciones binarias
Sobrescribir una columna existente
Sí, la asignación simple sobrescribe:
df['Age'] = [26, 31, 36, 41]Insertar una columna en una posición usando el nombre de la columna
df.insert(df.columns.get_loc("Age"), 'Score', [1, 2, 3, 4])Es útil cuando el orden de las columnas depende de nombres existentes (por ejemplo, en pipelines automáticos).
⚠ Error común a evitar: SettingWithCopyWarning
Si haces un slice de un DataFrame de forma incorrecta:
subset = df[df['Age'] > 30]
subset['Flag'] = 1 # Warning!Corrección:
subset = df[df['Age'] > 30].copy()
subset['Flag'] = 1Conclusión
Ahora conoces los 6 métodos esenciales para añadir nuevas columnas en Pandas:
- Asignación simple (mejor opción por defecto)
insertpara controlar el orden exactoassignpara method chainingconcatpara combinar DataFrames- Columnas basadas en cálculos
- Columnas basadas en lógica condicional
Estas técnicas te ayudan a manipular DataFrames de forma eficiente y a evitar errores comunes.
FAQ (para SEO y soporte al usuario)
1. ¿Cómo añado una columna con el mismo valor?
df['Source'] = 'System'2. ¿Cómo añado una columna basada en una función?
df['Score'] = df.apply(lambda x: x['Math'] * 0.6 + x['English'] * 0.4, axis=1)3. ¿Cómo añado varias columnas a la vez?
df[['A', 'B']] = df[['X', 'Y']] * 24. ¿Cuál es el método más rápido?
La asignación simple (df['col'] = ...) suele ser la opción más eficiente.