Страницы

Поиск по вопросам

вторник, 10 декабря 2019 г.

Чтение SQL таблицы через Pandas

#python #mysql #python_3x #pandas #dataframe


Есть SQL таблица, которая читается через Pandas. 

Возможно ли изменить формат вывода даты и времени на '2019-10-10 10:00:00' в одном
столбце datetime и сделать данный столбец индексом?

     date     time    open    high    low     close
0  20191010  100000  131030  131450  131030  131130
1  20191010  103000  131120  131120  130560  130770
2  20191010  110000  130780  131250  130630  131180
3  20191010  113000  131190  131230  130900  130920
4  20191010  120000  130920  131110  130740  130790
5  20191010  123000  130790  131170  130700  131100

connection = pymysql.connect(host='localhost', user='root', passwd='******', db='quotes')
stocks = pd.io.sql.read_sql("SELECT * FROM 30min", connection)
connection.close()

    


Ответы

Ответ 1



Решение при помощи Pandas: Исходный DataFrame: In [5]: df Out[5]: date time open high low close 0 20191010 100000 131030 131450 131030 131130 1 20191010 103000 131120 131120 130560 130770 2 20191010 110000 130780 131250 130630 131180 3 20191010 113000 131190 131230 130900 130920 4 20191010 120000 130920 131110 130740 130790 5 20191010 123000 130790 131170 130700 131100 Решение: In [6]: df = df.set_index(pd.to_datetime(df.pop("date").astype(str) + " " + df.pop("time").astype(str))) Результат: In [7]: df Out[7]: open high low close 2019-10-10 10:00:00 131030 131450 131030 131130 2019-10-10 10:30:00 131120 131120 130560 130770 2019-10-10 11:00:00 130780 131250 130630 131180 2019-10-10 11:30:00 131190 131230 130900 130920 2019-10-10 12:00:00 130920 131110 130740 130790 2019-10-10 12:30:00 130790 131170 130700 131100 такое же преобразование можно сделать и на стороне MySQL DB: select str_to_date(concat(cast(date as char(8)), cast(time as char(6))), '%Y%m%d%h%i%s') as dt, open, high, low, close from 30min;

Комментариев нет:

Отправить комментарий