Я запрашиваю базовую базу данных PostgreSQL, используя Pandas 0.8. Pandas правильно возвращает DataFrame, но базовый столбец timestamp в моей базе данных возвращается в качестве общего типа «объект» в Pandas. Поскольку мне в конечном итоге хотелось бы выполнить сезонные нормализации моих данных, и мне любопытно, как преобразовать этот общий столбец «объект» в то, что подходит для анализа.Преобразование объекта в DateRange
Вот мой текущий код для извлечения данных:
# get timestamp with time zone Pandas example
import pandas.io.sql as psql
import psycopg2
# define query
QRY = """
select
i i,
i * random() f,
case when random() > 0.5
then
true
else
false
end b,
(current_date - (i*random())::int)::timestamp with time zone tsz
from
generate_series(1,1000) as s(i)
order by
4
;
"""
CONN_STRING = "host='localhost' port=5432 dbname='postgres' user='postgres'"
# connect to db
conn = psycopg2.connect(CONN_STRING)
# get some data set index on relid column
df = psql.frame_query(QRY, con=conn)
print "Row count retrieved: %i" % (len(df),)
Результат в Python:
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1000 entries, 0 to 999
Data columns:
i 1000 non-null values
f 1000 non-null values
b 1000 non-null values
tsz 1000 non-null values
dtypes: bool(1), float64(1), int64(1), object(1)
Интересно отметить, что первый столбец, "я", является цв Integer в PG , Я не уверен, почему Pandas считает, что это столбец типа «bool». Моя реальная проблема, хотя это столбец «объект», который, я думаю, должен быть какого-то типа метки времени.
Я немного смущен тем, что вы здесь делаете. Разве истинная/ложная часть QRY не объясняет характер bool для вашего примера? Возможно, нам нужно увидеть схему БД. –