Eu tenho um dataframe com horários e preços do Unix. Desejo converter a coluna do índice para que seja exibida em datas legíveis por humanos.
Portanto, por exemplo, tenho date
como 1349633705
na coluna de índice, mas gostaria que fosse mostrado como 10/07/2012
(ou pelo menos 10/07/2012 18:15
).
Para algum contexto, aqui está o código com o qual estou trabalhando e o que já tentei:
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 você pode ver, estou usando
df.date = df.date.apply(lambda d: datetime.strptime(d, "%Y-%m-%d"))
aqui, o que não funciona, pois estou trabalhando com inteiros, não com strings. Acho que preciso usar, datetime.date.fromtimestamp
mas não tenho certeza de como aplicar isso ao todo df.date
.
Obrigado.
python
pandas
unix-timestamp
dataframe
WA Carnegie
fonte
fonte
OverflowError: Python int too large to convert to C long
.lambda x: x/1000.0
, ouunit='ms'
.Se você tentar usar:
e receber um erro:
Isso significa que
DATE_FIELD
não é especificado em segundos.No meu caso, foram milissegundos -
EPOCH time
.A conversão funcionou usando a seguir:
fonte
Supondo que importamos
pandas as pd
edf
é nosso dataframefunciona para mim.
fonte
Como alternativa, alterando uma linha do código acima:
Também deve funcionar.
fonte