Соединение по диапазону в 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