Tengo un marco de datos con tiempos y precios Unix. Quiero convertir la columna de índice para que se muestre en fechas legibles por humanos.
Entonces, por ejemplo, tengo date
como 1349633705
en la columna de índice, pero me gustaría que se mostrara como 10/07/2012
(o al menos 10/07/2012 18:15
).
Para algo de contexto, aquí está el código con el que estoy trabajando y lo que ya probé:
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
Como puede ver, estoy usando
df.date = df.date.apply(lambda d: datetime.strptime(d, "%Y-%m-%d"))
aquí, lo que no funciona ya que 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.
python
pandas
unix-timestamp
dataframe
WA Carnegie
fuente
fuente
OverflowError: Python int too large to convert to C long
.lambda x: x/1000.0
, ounit='ms'
.Si intentas usar:
y recibe un error:
Esto significa
DATE_FIELD
que no se especifica en segundos.En mi caso, fueron milisegundos -
EPOCH time
.La conversión funcionó usando a continuación:
fuente
Suponiendo que importamos
pandas as pd
ydf
es nuestro marco de datosfunciona para mi.
fuente
Alternativamente, cambiando una línea del código anterior:
También debería funcionar.
fuente