Добавить df в таблицу SQLite по индексу

Задача следующая: Загружаю в pandas df свечи за 1 минуту с Binance и создаю таблицу через df.to_sql, получаю

t               o1m         c1m
1670569080000   0.13150000  0.13150000
1670569140000   0.13150000  0.13150000
1670569200000   0.13150000  0.13150000
1670569260000   0.13150000  0.13180000
1670569320000   0.13180000  0.13190000
1670569380000   0.13190000  0.13190000
1670569440000   0.13190000  0.13200000
1670569500000   0.13210000  0.13220000

Далее загружаю свечи за 5 минут

t               o5m         c5m
1670569200000   0.13150000  0.13200000
1670569500000   0.13210000  0.13220000

Хочу добавить df в таблицу SQL, объединяя по столбцу "t":

 t              o1m         c1m         o5m         c5m
1670569080000   0.13150000  0.13150000
1670569140000   0.13150000  0.13150000
1670569200000   0.13150000  0.13150000  0.13150000  0.13200000
1670569260000   0.13150000  0.13180000
1670569320000   0.13180000  0.13190000
1670569380000   0.13190000  0.13190000
1670569440000   0.13190000  0.13200000
1670569500000   0.13210000  0.13220000  0.13210000  0.13220000

Значений будет тысячи, еще и временный промежутки добавятся: за 30 минут, за час, за день. Возможно ли это, и как это сделать? Спасибо


Ответы (1 шт):

Автор решения: Алексей Р

Перед экспериментами с данными сделайте резервную копию во избежание их повреждения.

Что предлагаю.

  1. Создать таблицу с доп. полем "период", в который помещать признак периода агрегации данных - 1 минута, 5 минут, 30 минут и т.д. Например:
CREATE TABLE IF NOT EXISTS candles (
    id     INTEGER    PRIMARY KEY AUTOINCREMENT
                      NOT NULL,
    t      NUMERIC    NOT NULL,
    o1m    DOUBLE,
    c1m    DOUBLE,
    period STRING (2) 
);

Можно обойтись без SQL запроса, просто записав первый фрейм с нужным набором столбцов в режиме if_exists='replace'.

  1. В каждый фрейм перед записью (df.to_sql) добавлять столбец с периодом, например:
df['period'] = '1m'
  1. После чего каждый фрейм записывать в базу с использованием df.to_sql с указанием атрибута if_exists='append', т.е. дополнять существующую таблицу.
  2. Далее простейшими запросами вида (например, с помощью pandas.read_sql):
SELECT * from candles where period="5m"

извлекать данные нужной периодичности.

Выглядеть эта таблица может как-то так: введите сюда описание изображения

→ Ссылка