"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como mesclar dataframes do Pandas com eficiência com base em uma condição de intervalo?

Como mesclar dataframes do Pandas com eficiência com base em uma condição de intervalo?

Publicado em 2024-11-21
Navegar:137

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

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.

Tutorial mais recente Mais>

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