Я захожу на сервер MariaDB и пытаюсь подключиться и получить данные в pandas dataframe в python.
MariaDB выглядит следующим образом:
CREATE DATABASE `fhem` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
с таблицамиcurrent
и history
.
CREATE TABLE `fhem`.`history` (TIMESTAMP TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, DEVICE varchar(64), TYPE varchar(64), EVENT varchar(512), READING varchar(64), VALUE varchar(128), UNIT varchar(32));
Я могу успешно подключиться в python:
import pandas as pd
import sqlalchemy as db
engine = db.create_engine('mysql+mysqlconnector://user:pass@192.168.37.33:3306/fhem')
data = pd.read_sql_table('history', engine)
Dataframe имеет правильный заголовок:
['TIMESTAMP', 'DEVICE', 'TYPE', 'EVENT', 'READING', 'VALUE', 'UNIT']
Ноячейки не имеют правильный формат.Они выглядят как
[50, 50, 46, 51]
и должны выглядеть примерно так:
"on" or "off"
Если я выполняю запрос в терминале с mysql -u user .. SELCET * from history; Я получаю правильные данные.Я пытался добавить
engine = db.create_engine('mysql+mysqlconnector://user:pass@192.168.37.33:3306/fhem', encoding='utf8')
engine = db.create_engine('mysql+mysqlconnector://user:pass@192.168.37.33:3306/fhem?charset=utf8')
Но это тоже не помогло.Единственный столбец, который отображается правильно: TIMESTAMP
.
. Я могу сделать следующее:
for l in data['VALUE'].values:
x = l.decode('utf-8')
print(x)
Я мог бы сделать это для каждого интересующего меня столбца, а затем добавить его вновый дф но я думаю должен быть лучший путь.Вы можете мне помочь?
РЕДАКТИРОВАТЬ
У меня есть следующие варианты:
print(data['VALUE'])
for l in data['VALUE']:
print(l)
for l in data['VALUE']:
print(l.decode('utf-8'))
Последний, это df, к которому я стремлюсьна.Я пытался
data['VALUE'].apply(lambda x: x.decode('utf-8'))
, который ничего не делает.Я работаю на пандах 0.23.4 и sqlalchemy 1.2.12
Fabian