Junção por intervalo no Pandas
Na manipulação de dados usando o Pandas, uma tarefa comum é mesclar dois dataframes com base em uma condição de intervalo. Isso envolve identificar as linhas no dataframe A onde os valores em uma coluna específica estão dentro de um intervalo especificado no dataframe B.
Uma abordagem para esta tarefa envolve a criação de uma coluna fictícia em ambos os dataframes, realizando uma junção cruzada usando esta coluna fictícia e, em seguida, filtrando as linhas que não atendem aos critérios de intervalo. No entanto, este método pode ser ineficiente para grandes conjuntos de dados.
Uma solução alternativa é utilizar a transmissão numpy, que é uma técnica poderosa para realizar operações elemento a elemento em matrizes. Ao converter as colunas relevantes nos dataframes A e B em matrizes numpy, podemos aplicar operadores lógicos para comparar A_value com os valores B_low e B_high para identificar as linhas que satisfazem a condição de intervalo.
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 oferece maior eficiência para grandes conjuntos de dados em comparação com a abordagem de coluna fictícia. Além disso, permite fácil implementação de junções à esquerda ou à direita, ajustando a lógica na etapa de transmissão numpy.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3