#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;
Комментариев нет:
Отправить комментарий