Fusión y combinación avanzadas
pd.merge() con how, on, left_on/right_on, suffixes y merge_asof para combinaciones basadas en el tiempo.
Fusión y combinación avanzadas es una lección gratuita de Learn AI with Python 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 Learn AI with Python, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Learn AI with Python incluye 4 lecciones en total.
Combinación de DataFrames
pd.merge une dos DataFrames mediante claves compartidas, exactamente como una operación SQL JOIN. Dominar las opciones de how es esencial para trabajar con datos relacionales.
import pandas as pd
left = pd.DataFrame({"id": [1, 2, 3], "name": ["a", "b", "c"]})
right = pd.DataFrame({"id": [2, 3, 4], "score": [90, 80, 70]})Unión interna (predeterminada)
how="inner" conserva solo las claves presentes en AMBOS DataFrames. Es la opción predeterminada.
print(pd.merge(left, right, on="id", how="inner"))
# id name score
# 0 2 b 90
# 1 3 c 80Unión izquierda
how="left" conserva todas las filas del DataFrame izquierdo; las columnas derechas sin coincidencia se convierten en NaN. Es la unión más habitual en análisis.
print(pd.merge(left, right, on="id", how="left"))
# id name score
# 0 1 a NaN
# 1 2 b 90.0
# 2 3 c 80.0Unión externa
how="outer" conserva todas las claves de ambos lados y rellena los huecos con NaN. Úsela para ver la unión completa de los registros.
print(pd.merge(left, right, on="id", how="outer"))
# includes id 1 (no score) and id 4 (no name)Unión con nombres de columna diferentes
Cuando las columnas clave tienen nombres diferentes, use left_on y right_on en lugar de on.
r2 = right.rename(columns={"id": "user_id"})
print(pd.merge(left, r2, left_on="id", right_on="user_id"))Sufijos para columnas superpuestas
Si ambos DataFrames comparten el nombre de una columna que no es clave, pandas añade _x y _y. Puede reemplazarlos con suffixes para mayor claridad.
a = pd.DataFrame({"id": [1], "val": [10]})
b2 = pd.DataFrame({"id": [1], "val": [99]})
print(pd.merge(a, b2, on="id", suffixes=("_old", "_new")))La columna indicator
indicator=True añade una columna _merge que muestra el origen de cada fila: left_only, right_only o both. Es muy útil para auditar uniones.
print(pd.merge(left, right, on="id", how="outer", indicator=True))
# _merge tells you where each row came fromDiagnóstico de problemas en las uniones
Filtrar por el indicador revela rápidamente las claves sin coincidencia, una causa frecuente de pérdida silenciosa de datos.
m = pd.merge(left, right, on="id", how="outer", indicator=True)
print(m[m["_merge"] != "both"]) # rows that did not matchmerge_asof para uniones temporales
pd.merge_asof combina por la clave MÁS CERCANA en lugar de exigir una coincidencia exacta. Está diseñada específicamente para alinear series temporales, por ejemplo, asociar cada operación con la cotización más reciente anterior. Ambos marcos deben estar ordenados por la clave.
trades = pd.DataFrame({"time": [1, 3, 7], "price": [10, 11, 12]})
quotes = pd.DataFrame({"time": [0, 2, 5], "bid": [9, 10, 11]})
print(pd.merge_asof(trades, quotes, on="time"))Dirección de merge_asof
De forma predeterminada, merge_asof busca HACIA ATRÁS (la clave más reciente que sea igual o anterior). Utilice direction="forward" o "nearest" para cambiar la regla de coincidencia.
print(pd.merge_asof(trades, quotes, on="time", direction="nearest"))Elegir la unión adecuada
Utilice inner para conservar solo las coincidencias, left para enriquecer una tabla principal, outer para obtener la unión completa y merge_asof para uniones temporales con claves aproximadas.
Comprobación rápida
Ponga a prueba sus conocimientos sobre uniones.
Resumen
Herramientas para combinar datos:
how=inner / left / outer controla qué claves se conservanonfrente aleft_on/right_onpara las columnas de clavessuffixesdesambigua los nombres duplicadosindicator=Truepermite auditar el origen de las filaspd.merge_asofpara uniones temporales por la clave más cercana (ordene primero)
Preguntas frecuentes
¿La lección «Fusión y combinación avanzadas» es gratis?
Sí — el texto completo de «Fusión y combinación avanzadas» 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 Learn AI with Python, actualiza a CoddyKit PRO. El curso de Learn AI with Python incluye 4 lecciones en total.
¿Qué aprenderé en «Fusión y combinación avanzadas»?
pd.merge() con how, on, left_on/right_on, suffixes y merge_asof para combinaciones basadas en el tiempo. Practicas Learn AI with Python 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 Learn AI with Python?
No se requiere experiencia previa. Learn AI with Python 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 «Fusión y combinación avanzadas»?
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 Learn AI with Python?
Sí. Cada lección de Learn AI with Python 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
- GroupBy y agregación
- Tablas dinámicas y tabulación cruzada
- Fusión y combinación avanzadas
- Series temporales en Pandas