«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как эффективно объединить фреймы данных Pandas на основе условия диапазона?

Как эффективно объединить фреймы данных Pandas на основе условия диапазона?

Опубликовано 21 ноября 2024 г.
Просматривать:609

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

Соединение по диапазону в Pandas

При манипулировании данными с использованием Pandas одной общей задачей является объединение двух фреймов данных на основе условия диапазона. Это включает в себя идентификацию строк в кадре данных A, где значения в определенном столбце лежат в пределах указанного диапазона в кадре данных B.

Один из подходов к этой задаче включает создание фиктивного столбца в обоих кадрах данных, выполнение перекрестного соединения с использованием этот фиктивный столбец, а затем отфильтровать строки, не соответствующие критериям диапазона. Однако этот метод может быть неэффективным для больших наборов данных.

Альтернативное решение — использовать широковещательную рассылку numpy, которая является мощным методом выполнения поэлементных операций с массивами. Преобразуя соответствующие столбцы в кадрах данных A и B в массивы numpy, мы можем применить логические операторы для сравнения A_value со значениями B_low и B_high, чтобы определить строки, которые удовлетворяют условию диапазона.

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] 

Этот метод обеспечивает большую эффективность для больших наборов данных по сравнению с подходом с фиктивными столбцами. Кроме того, он позволяет легко реализовать левое или правое соединение путем настройки логики на этапе трансляции numpy.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3