4Geeks chosen to deliver AI education in the Bahamas alongside Harvard, Oxford, and Columbia.See more

¿Cómo añadir una columna a un DataFrame en Python?

By 4Geeks

Añade columnas con un valor, una lista o un cálculo, ponlas en la posición que quieras y evita los NaN y los errores de longitud.

6 min readLast updated
Icono de añadir una columna a un DataFrame

¿Cómo añadir una columna a un DataFrame en pandas?

Respuesta corta: asigna los valores a un nombre nuevo entre corchetes: df["nueva"] = valores. Los valores pueden ser una lista con un valor por fila, un único valor para todas las filas o un cálculo con otras columnas.

python
import pandas as pd
 
df = pd.DataFrame({
    "producto": ["Café", "Té", "Agua"],
    "precio": [2.5, 2.0, 1.0],
    "unidades": [10, 4, 20],
})
 
df["total"] = df["precio"] * df["unidades"]
print(df)
  producto  precio  unidades  total
0     Café     2.5        10   25.0
1       Té     2.0         4    8.0
2     Agua     1.0        20   20.0

La columna nueva se añade al final. Si el nombre ya existe, pandas reemplaza sus valores en lugar de crear otra columna.

Corchetes para lo habitual, insert() para elegir la posición y assign() para encadenar.

3 formas de añadir una columna en pandas

FormaEjemploDónde la poneCambia df
Corchetesdf["total"] = df["precio"] * df["unidades"]Al finalSí
insert()df.insert(1, "codigo", ["C01", "T01", "A01"])En la posición que elijasSí
assign()df = df.assign(total=df["precio"] * df["unidades"])Al finalNo, devuelve un DataFrame nuevo

1. Con corchetes

Es la forma más usada. Funciona con una lista, con un valor fijo o con un cálculo:

python
df["stock"] = [5, 0, 12]   # un valor por fila
df["moneda"] = "EUR"       # el mismo valor en todas

La lista tiene que tener exactamente tantos valores como filas tiene el DataFrame.

2. En una posición concreta con insert()

python
df.insert(1, "codigo", ["C01", "T01", "A01"])
print(df[["producto", "codigo", "precio"]])
  producto codigo  precio
0     Café    C01     2.5
1       Té    T01     2.0
2     Agua    A01     1.0

El primer argumento es la posición: 0 la pone la primera. insert() da error si la columna ya existe.

3. Varias columnas a la vez con assign()

python
resumen = df.assign(
    total=df["precio"] * df["unidades"],
    iva=lambda x: x["total"] * 0.21,
)
print(resumen[["producto", "total", "iva"]])
  producto  total   iva
0     Café   25.0  5.25
1       Té    8.0  1.68
2     Agua   20.0  4.20

assign() no cambia df, devuelve uno nuevo. Con lambda puedes usar columnas creadas en el mismo assign(), como iva usa total.

Ejemplos de columnas calculadas en pandas

Con una condición

python
import numpy as np
 
df["tipo"] = np.where(df["precio"] > 1.5, "premium", "básico")

np.where() elige un valor si se cumple la condición y otro si no. Para un simple sí o no, basta con df["caro"] = df["precio"] > 1.5, que crea una columna de True y False.

Rellenar solo algunas filas

python
df.loc[df["stock"] == 0, "aviso"] = "agotado"

Las filas que no cumplen la condición quedan con NaN.

A partir de un diccionario

python
categorias = {"Café": "caliente", "Té": "caliente", "Agua": "fría"}
 
df["categoria"] = df["producto"].map(categorias)

Por rangos de valores

python
df["nivel"] = pd.cut(df["unidades"], bins=[0, 5, 15, 100], labels=["bajo", "medio", "alto"])
print(df[["unidades", "nivel"]])
   unidades  nivel
0        10  medio
1         4   bajo
2        20   alto

Uniendo textos de otras columnas

python
df["nombre_largo"] = df["producto"] + " (" + df["tipo"] + ")"

Con una función propia

python
df["etiqueta"] = df["producto"].apply(lambda p: p.upper())

apply() sirve para cualquier lógica, pero es más lento que las operaciones con columnas enteras. Para pasar a mayúsculas, df["producto"].str.upper() hace lo mismo y es más rápido.

Carrera · Ingeniería de IA

Ya sabes transformar datos con pandas, ahora construye con IA

De cero a AI Engineer junior: Python, datos, agentes de IA y RAG con mentores y proyectos reales.

Cuidado con el índice al añadir una Serie

Cuando asignas una Serie, pandas la coloca por el índice, no por la posición:

python
d = pd.DataFrame({"a": [1, 2, 3]}, index=[10, 11, 12])
 
d["b"] = pd.Series([7, 8, 9])          # índices 0, 1, 2: no coinciden
d["c"] = pd.Series([7, 8, 9]).values   # .values ignora el índice
print(d)
    a   b  c
10  1 NaN  7
11  2 NaN  8
12  3 NaN  9

Si una columna nueva sale llena de NaN, revisa que los índices coincidan o usa .values o reset_index(drop=True).

Si los datos de la columna nueva están en otra tabla, no los copies a mano: únelas con merge(). Y si te sobra alguna columna, mira cómo eliminar columnas en pandas.

Añade columnas con IA

Un asistente como ChatGPT, Claude o GitHub Copilot escribe el cálculo de una columna nueva en segundos si le das tus columnas y la regla. Estos tres prompts están listos para copiar.

1. Crea una columna calculada

Tengo un DataFrame de pandas con estas columnas: [pega df.columns.tolist()] y estos datos: [pega df.head()].
Añade una columna llamada [nombre] que [regla, por ejemplo: sea "alto" si ventas es mayor que 1000 y "bajo" si no].
Usa operaciones vectorizadas, sin bucles, y explícame el código.

2. Crea varias columnas de fechas

Tengo una columna [nombre] con fechas en formato [ejemplo]. Añade columnas con el año, el mes,
el día de la semana y si es fin de semana. Usa pandas y explícame cada línea.

3. Arregla una columna nueva con NaN o con error

Al añadir una columna a mi DataFrame [sale llena de NaN / me da este error: pega el error]:
[pega tu código, df.shape y df.index]
Explícame la causa y dame la corrección.

Comprueba siempre el resultado con df.head() y df.dtypes antes de seguir trabajando con los datos.

Aprende con un mentor

De columnas calculadas a aplicaciones con IA

En la carrera de Ingeniería de IA de 4Geeks empiezas sin experiencia y terminas con agentes de IA y sistemas RAG en tu portafolio.

Errores comunes al añadir una columna

Lo que vesPor qué pasaSolución
ValueError: Length of values (2) does not match length of index (3)La lista tiene menos o más valores que filas el DataFrameRevisa len(df) y pasa un valor por fila
ValueError: cannot insert precio, already existsinsert() no reemplaza columnas que ya existenUsa otro nombre o asigna con df["precio"] = ...
La columna nueva sale llena de NaNLa Serie que asignas tiene otro índiceUsa .values o reset_index(drop=True)
La columna no apareceUsaste assign() y no guardaste el resultadoUsa df = df.assign(...)
UserWarning: Pandas doesn't allow columns to be created via a new attribute nameCon un punto, df.nueva = valores, no se crea una columnaUsa corchetes: df["nueva"] = valores
TypeError al sumar textos y númerosUna de las columnas es textoConvierte con astype(str) o astype(float) antes de operar

Guías relacionadas

Descarga gratis

Añadir columnas en pandas en una chuleta de 2 páginas

Las 3 formas de añadir columnas, columnas calculadas con condiciones, diccionarios y rangos, el problema del índice, errores comunes y prompts para ChatGPT, Claude o Copilot. Gratis, en PDF.

Chuleta: añadir columnas a un DataFrame

2 páginas · PDF · 4Geeks

  • Corchetes, insert() y assign() comparados
  • Recetas de columnas calculadas listas para copiar
  • Errores comunes y prompts para resolverlos con IA

Consíguela gratis

Tu PDF al instante

Preguntas frecuentes sobre añadir columnas a un DataFrame

¿Quieres pasar de transformar datos con pandas a construir aplicaciones con IA, con proyectos reales y mentores?

Ver la carrera de Ingeniería de IA