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.
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