объединить или объединить pandas фрейм данных с таблицей sqlite? - PullRequest
0 голосов
/ 13 марта 2020

У меня есть большая таблица sqlite, которую нельзя загружать сразу в память со столбцами ['a','b','c',...]. Он имеет составной индекс для столбцов a и b.

a    b     c   ....
1    34    45656 .....
54   175   34323 ....
102  12121  3029 ....

Теперь я хочу извлечь строки, которые имеют конкретные значения a и b, поэтому я думаю о создание запроса типа

SELECT * FROM table WHERE a IN <insert tuple of a vals> AND b IN <insert tuple of b vals>

Однако есть тысячи таких комбинаций a и b, которые я хочу проверить. Я могу создать базу данных pandas, которая содержит следующие комбинации:

>>> df
    a    b
    102  12121
    234  879789
    ...  ...

, и может быть проще просто объединить или объединить две таблицы.

Однако я не хочу добавьте еще одну таблицу в файл sqlite.db, потому что я могу сделать разные df s, и я не хочу продолжать раздувать размер моего файла базы данных sqlite. Есть ли способ создать временную таблицу в базе данных sqlite для слияния? Или есть способ сделать это через pandas?

1 Ответ

0 голосов
/ 14 марта 2020

Поскольку у вас есть индекс для a и b, запросы для каждой комбинации a и b должны быть более эффективными, чем создание новых структур данных в Pandas или SQLite AND при выполнении объединения.

Вы можете l oop для каждой комбинации a и b и запроса, или вы можете сделать это в одном запросе, но вы ограничены SQLITE_MAX_SQL_LENGTH:

SELECT * FROM table WHERE (a = <a1> AND b = <b1>) OR (a = "a2" AND b = <b2>) ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...