python pandas unix-timestamp dataframe

python - Convertir tiempo de Unix a fecha legible en pandas DataFrame



date unix (3)

Estos parecen ser segundos desde la época.

In [20]: df = DataFrame(data[''values'']) In [21]: df.columns = ["date","price"] In [22]: df Out[22]: <class ''pandas.core.frame.DataFrame''> Int64Index: 358 entries, 0 to 357 Data columns (total 2 columns): date 358 non-null values price 358 non-null values dtypes: float64(1), int64(1) In [23]: df.head() Out[23]: date price 0 1349720105 12.08 1 1349806505 12.35 2 1349892905 12.15 3 1349979305 12.19 4 1350065705 12.15 In [25]: df[''date''] = pd.to_datetime(df[''date''],unit=''s'') In [26]: df.head() Out[26]: date price 0 2012-10-08 18:15:05 12.08 1 2012-10-09 18:15:05 12.35 2 2012-10-10 18:15:05 12.15 3 2012-10-11 18:15:05 12.19 4 2012-10-12 18:15:05 12.15 In [27]: df.dtypes Out[27]: date datetime64[ns] price float64 dtype: object

Tengo un marco de datos con tiempos Unix y precios en él. Quiero convertir la columna de índice para que se muestre en fechas legibles por humanos. Así que, por ejemplo, tengo "fecha" como 1349633705 en la columna de índice, pero me gustaría que se muestre como 10/07/2012 (o al menos 10/07/2012 18:15). Para cierto contexto, aquí está el código con el que estoy trabajando y lo que ya he intentado:

import json import urllib2 from datetime import datetime response = urllib2.urlopen(''http://blockchain.info/charts/market-price?&format=json'') data = json.load(response) df = DataFrame(data[''values'']) df.columns = ["date","price"] #convert dates df.date = df.date.apply(lambda d: datetime.strptime(d, "%Y-%m-%d")) df.index = df.date df

Como pueden ver, estoy usando df.date = df.date.apply(lambda d: datetime.strptime(d, "%Y-%m-%d")) que no funciona porque estoy trabajando con enteros, no con cadenas. Creo que necesito usar datetime.date.fromtimestamp pero no estoy muy seguro de cómo aplicar esto a la totalidad de df.date. Gracias.


Si intentas usar:

df[DATE_FIELD]=(pd.to_datetime(df[DATE_FIELD],***unit=''s''***))

y recibe un error:

"pandas.tslib.OutOfBoundsDatetime: no se puede convertir la entrada con la unidad ''"

Esto significa que DATE_FIELD no se especifica en segundos.

En mi caso, fue milli segundos - EPOCH time .

La conversión funcionó usando a continuación:

df[DATE_FIELD]=(pd.to_datetime(df[DATE_FIELD],unit=''ms''))


Suponiendo que importamos pandas como pd y df es nuestro marco de datos

pd.to_datetime(df[''date''],unit=''s'')

este código funcionó para mí