У меня есть два кадра данных: a (~600 млн строк) и b (~2 млн строк). Каков наилучший подход к соединению b с a при использовании 1 условия равенства и 2 условий неравенства в соответствующих столбцах?
a_1 = b_1
a_2 >= b_2
a_3 >= b_3
На данный момент я исследовал следующие пути:
Полярности:
join_asof(): допускает только 1 условие неравенства
join_where() с фильтром(): даже при небольшом окне допуска в стандартной установке Polars не хватает строк (ограничение строк 4,3 Б) во время соединения, а в установке Polars-u64-idx не хватает строк. память (512 ГБ)
[*]DuckDB: ASOF LEFT JOIN: также допускает только 1 условие неравенства
< li>Numba: Поскольку описанное выше не сработало, я попытался создать собственную функцию join_asof() — см. код ниже. Он работает нормально, но с увеличением длины a становится непомерно медленным. Я пробовал различные конфигурации циклов for/ while и фильтрации, все с одинаковыми результатами.
Теперь у меня заканчиваются идеи... Какой способ реализовать это было бы более эффективным?
Спасибо!
import numba as nb
import numpy as np
import polars as pl
import time
У меня есть два кадра данных: [b]a (~600 млн строк)[/b] и [b]b (~2 млн строк)[/b]. Каков наилучший подход к соединению b с a при использовании 1 условия равенства и [b]2 условий неравенства[/b] в соответствующих столбцах? [list] [*] a_1 = b_1 [*]a_2 >= b_2 [*]a_3 >= b_3 [/list] На данный момент я исследовал следующие пути: [list] [*][b]Полярности[/b]:
join_asof(): допускает только 1 условие неравенства[*]join_where() с фильтром(): даже при небольшом окне допуска в стандартной установке Polars не хватает строк (ограничение строк 4,3 Б) во время соединения, а в установке Polars-u64-idx не хватает строк. память (512 ГБ) [/list]
[*][b]DuckDB[/b]: ASOF LEFT JOIN: также допускает только 1 условие неравенства < li>[b]Numba[/b]: Поскольку описанное выше не сработало, я попытался создать собственную функцию join_asof() — см. код ниже. Он работает нормально, но с увеличением длины a становится непомерно медленным. Я пробовал различные конфигурации циклов for/ while и фильтрации, все с одинаковыми результатами.
Теперь у меня заканчиваются идеи... Какой способ реализовать это было бы более эффективным? Спасибо! import numba as nb import numpy as np import polars as pl import time
У меня есть два кадра данных: a (~600 млн строк) и b (~2 млн строк) . Каков наилучший подход к соединению b с a при использовании 1 условия равенства и 2 условий неравенства в соответствующих столбцах?
У меня есть два кадра данных: a (~600 млн строк) и b (~2 млн строк) . Каков наилучший подход к соединению b с a при использовании 1 условия равенства и 2 условий неравенства в соответствующих столбцах?
У меня есть два кадра данных: a (~600 млн строк) и b (~2 млн строк) . Каков наилучший подход к соединению b с a при использовании 1 условия равенства и 2 условий неравенства в соответствующих столбцах?
У меня есть два кадра данных: a (~600 млн строк) и b (~2 млн строк) . Каков наилучший подход к соединению b с a при использовании 1 условия равенства и 2 условий неравенства в соответствующих столбцах?
У меня есть два кадра данных: a (~600 млн строк) и b (~2 млн строк) . Каков наилучший подход к соединению b с a при использовании 1 условия равенства и 2 условий неравенства в соответствующих столбцах?