"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo fusionar eficientemente los marcos de datos de Pandas en función de una condición de rango?

¿Cómo fusionar eficientemente los marcos de datos de Pandas en función de una condición de rango?

Publicado el 2024-11-21
Navegar:831

How to Efficiently Merge Pandas DataFrames Based on a Range Condition?

Unirse por rango en Pandas

En la manipulación de datos con Pandas, una tarea común es fusionar dos marcos de datos en función de una condición de rango. Esto implica identificar las filas en el marco de datos A donde los valores de una columna específica se encuentran dentro de un rango específico en el marco de datos B.

Un enfoque para esta tarea implica crear una columna ficticia en ambos marcos de datos, realizando una unión cruzada usando esta columna ficticia y luego filtrar las filas que no cumplen con los criterios de rango. Sin embargo, este método puede ser ineficiente para conjuntos de datos grandes.

Una solución alternativa es utilizar numpy broadcasting, que es una técnica poderosa para realizar operaciones de elementos en matrices. Al convertir las columnas relevantes en los marcos de datos A y B en matrices numpy, podemos aplicar operadores lógicos para comparar el valor A con los valores B_low y B_high para identificar las filas que satisfacen la condición de rango.

import numpy as np

# Convert to numpy arrays
a = A.A_value.values
bh = B.B_high.values
bl = B.B_low.values

# Find intersecting indices
i, j = np.where((a[:, None] >= bl) & (a[:, None] 

Este método ofrece una mayor eficiencia para conjuntos de datos grandes en comparación con el enfoque de columnas ficticias. Además, permite una fácil implementación de uniones izquierda o derecha ajustando la lógica en el paso de transmisión numpy.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3