Añadir y eliminar columnas
Añada nuevas columnas calculadas, cambie el nombre de las existentes y elimine columnas o filas no deseadas con drop().
Añadir y eliminar columnas es una lección gratuita de Pandas & NumPy Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Pandas & NumPy Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Pandas & NumPy Academy incluye 4 lecciones en total.
Añadir una columna nueva mediante asignación
La forma más sencilla de añadir una columna es mediante asignación directa: df['new_col'] = values. El lado derecho puede ser un escalar (se propaga a todas las filas), una lista de la misma longitud, un array de NumPy, una Serie de Pandas (alineada por índice) o una expresión calculada a partir de columnas existentes. Las columnas nuevas se añaden a la derecha del DataFrame.
import pandas as pd
df = pd.DataFrame({'price': [10.0, 20.0, 15.0], 'qty': [3, 5, 2]})
df['revenue'] = df['price'] * df['qty']
df['currency'] = 'USD'
print(df)Ingeniería de características: columnas calculadas
Una de las operaciones más comunes con un DataFrame es crear características derivadas a partir de columnas existentes. Puede calcular totales acumulados, proporciones, indicadores o codificar valores categóricos mediante una sola expresión vectorizada. Estas columnas calculadas se actualizan automáticamente cuando cambian las columnas de origen si vuelve a calcularlas, lo que facilita reproducir los pipelines de ingeniería de características.
import pandas as pd
df = pd.DataFrame({'salary': [50000, 80000, 60000],
'bonus': [5000, 12000, 7000]})
df['total_comp'] = df['salary'] + df['bonus']
df['bonus_pct'] = (df['bonus'] / df['salary'] * 100).round(1)
print(df)Usar assign() para encadenar métodos
df.assign(new_col=expression) devuelve un nuevo DataFrame con la columna añadida sin modificar el original. A diferencia de la asignación directa, se integra de forma natural en una cadena de métodos. Puede añadir varias columnas en una sola llamada, y las expresiones de columnas posteriores pueden hacer referencia a las columnas anteriores definidas en la misma llamada a assign() mediante funciones lambda.
import pandas as pd
df = pd.DataFrame({'x': [1, 2, 3], 'y': [4, 5, 6]})
result = (df
.assign(sum_xy=lambda d: d['x'] + d['y'])
.assign(ratio=lambda d: d['x'] / d['sum_xy'])
)
print(result)Cambiar nombres de columnas con rename()
df.rename(columns={'old': 'new'}) devuelve un nuevo DataFrame con las columnas renombradas. Pase un diccionario para cambiar el nombre de determinadas columnas sin afectar a las demás. También puede cambiar los nombres mediante una función: df.rename(columns=str.upper) convierte a mayúsculas todos los nombres de columna. Cambie siempre los nombres antes de combinar DataFrames de distintos orígenes para garantizar que las columnas clave coincidan.
import pandas as pd
df = pd.DataFrame({'a': [1, 2], 'b': [3, 4], 'c': [5, 6]})
renamed = df.rename(columns={'a': 'alpha', 'b': 'beta'})
print(renamed.columns.tolist()) # ['alpha', 'beta', 'c']
# Rename all columns to uppercase
print(df.rename(columns=str.upper).columns.tolist()) # ['A', 'B', 'C']Limpiar nombres de columnas
En los datos reales, los nombres de las columnas suelen contener espacios, caracteres especiales o un uso incoherente de mayúsculas y minúsculas. Un paso habitual de preprocesamiento consiste en normalizarlos: eliminar los espacios en blanco, convertirlos a minúsculas y sustituir los espacios por guiones bajos. Esto permite acceder a las columnas mediante la notación de punto y evita problemas de comillas en las cadenas de consulta similares a SQL.
import pandas as pd
df = pd.DataFrame(columns=['First Name', 'Last Name', 'Email Address'])
df.columns = (df.columns
.str.strip()
.str.lower()
.str.replace(' ', '_', regex=False)
)
print(df.columns.tolist()) # ['first_name', 'last_name', 'email_address']Insertar una columna en una posición específica
df.insert(loc, column, value) inserta una columna en la posición entera loc y desplaza las demás columnas hacia la derecha. Esto resulta útil cuando quiere que la nueva columna aparezca junto a columnas relacionadas en lugar de al final. Modifica el DataFrame directamente, a diferencia de assign().
import pandas as pd
df = pd.DataFrame({'name': ['A', 'B'], 'score': [80, 90]})
df.insert(1, 'grade', ['B', 'A'])
print(df)
# name grade score
# 0 A B 80
# 1 B A 90Eliminar columnas con drop()
df.drop(columns=['col1', 'col2']) devuelve un nuevo DataFrame sin esas columnas. La sintaxis anterior df.drop(['col1', 'col2'], axis=1) también funciona, pero resulta menos legible. Para eliminar las columnas directamente, pase inplace=True. En los pipelines, prefiera devolver un nuevo DataFrame para conservar el original y poder compararlo o revertir los cambios.
import pandas as pd
df = pd.DataFrame({'a': [1,2], 'b': [3,4], 'c': [5,6], 'd': [7,8]})
cleaned = df.drop(columns=['b', 'd'])
print(cleaned.columns.tolist()) # ['a', 'c']Eliminar filas con drop()
df.drop(index=['r1', 'r2']) elimina filas por etiqueta. df.drop([0, 2]) elimina las filas 0 y 2 de un índice entero predeterminado. La eliminación de filas se utiliza habitualmente para quitar registros incorrectos conocidos, valores atípicos o filas de prueba después de limpiar los datos. Para eliminar filas según una condición, prefiera la indexación booleana, ya que mantiene el código legible.
import pandas as pd
df = pd.DataFrame({'x': [10, 20, 30, 40]}, index=['a', 'b', 'c', 'd'])
trimmed = df.drop(index=['b', 'd'])
print(trimmed)
# x
# a 10
# c 30pop() para eliminar y devolver una columna
df.pop('col') elimina la columna del DataFrame directamente y la devuelve como una Series. Esto resulta útil cuando necesita extraer una columna objetivo (etiqueta) de una matriz de características: la elimina del DataFrame y la conserva por separado para usarla como variable y en un modelo.
import pandas as pd
df = pd.DataFrame({'feature1': [1,2], 'feature2': [3,4], 'target': [0,1]})
y = df.pop('target') # removes column and returns as Series
X = df # remaining features
print(y.tolist()) # [0, 1]
print(X.columns.tolist()) # ['feature1', 'feature2']Reordenar columnas
Para reordenar las columnas, selecciónelas en el orden deseado mediante df[['col3', 'col1', 'col2']]. En DataFrames grandes en los que solo quiere mover unas pocas columnas, calcule el orden deseado mediante programación: coloque las columnas prioritarias al principio y deje que las demás vayan después. Este es un paso habitual de preparación de informes antes de exportar a Excel.
import pandas as pd
df = pd.DataFrame({'id': [1,2], 'score': [80,90], 'name': ['A','B']})
# Move 'name' and 'id' to front
cols = ['name', 'id'] + [c for c in df.columns if c not in ['name', 'id']]
df = df[cols]
print(df.columns.tolist()) # ['name', 'id', 'score']Actualizar valores de columnas existentes
Para actualizar todos los valores de una columna existente se utiliza la misma sintaxis de asignación que para añadir una nueva: df['col'] = new_values. Use df.loc[mask, 'col'] = value para actualizar únicamente las filas que coincidan con una condición. No use nunca indexación encadenada para realizar actualizaciones; use siempre .loc para evitar el aviso SettingWithCopyWarning.
import pandas as pd
df = pd.DataFrame({'name': ['Alice', 'Bob', 'Carol'], 'score': [45, 80, 92]})
# Set scores below 50 to 50 (floor)
df.loc[df['score'] < 50, 'score'] = 50
print(df['score'].tolist()) # [50, 80, 92]Comprobación rápida
Compruebe sus conocimientos sobre cómo añadir y eliminar columnas en esta lección.
Resumen de la lección
En esta lección ha aprendido que: las nuevas columnas se añaden mediante asignación o con assign(), que es compatible con el encadenamiento de métodos; rename() cambia los nombres de las columnas sin alterar los datos; y drop() elimina columnas o filas y devuelve un nuevo DataFrame de forma predeterminada. A continuación usaremos head(), tail(), info() y describe() para crear rápidamente un perfil de cualquier DataFrame.
Preguntas frecuentes
¿La lección «Añadir y eliminar columnas» es gratis?
Sí — el texto completo de «Añadir y eliminar columnas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Pandas & NumPy Academy, actualiza a CoddyKit PRO. El curso de Pandas & NumPy Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Añadir y eliminar columnas»?
Añada nuevas columnas calculadas, cambie el nombre de las existentes y elimine columnas o filas no deseadas con drop(). Practicas Pandas & NumPy Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Pandas & NumPy Academy?
No se requiere experiencia previa. Pandas & NumPy Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Añadir y eliminar columnas»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Pandas & NumPy Academy?
Sí. Cada lección de Pandas & NumPy Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Creación de DataFrames
- Selección de columnas y filas
- Añadir y eliminar columnas
- Inspección básica de DataFrames