Mam ramkę danych z czasami i cenami uniksowymi. Chcę przekonwertować kolumnę indeksu, aby była wyświetlana w postaci czytelnej dla człowieka.
Na przykład mam date
jak 1349633705
w kolumnie indeksu, ale chciałbym, aby był wyświetlany jako 10/07/2012
(lub przynajmniej 10/07/2012 18:15
).
Dla niektórych kontekstów, oto kod, z którym pracuję i to, co już próbowałem:
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
Jak widać, używam
df.date = df.date.apply(lambda d: datetime.strptime(d, "%Y-%m-%d"))
tutaj, co nie działa, ponieważ pracuję z liczbami całkowitymi, a nie łańcuchami. Myślę, że muszę użyć, datetime.date.fromtimestamp
ale nie jestem do końca pewien, jak zastosować to do całości df.date
.
Dzięki.
python
pandas
unix-timestamp
dataframe
WA Carnegie
źródło
źródło
OverflowError: Python int too large to convert to C long
.lambda x: x/1000.0
lubunit='ms'
.Jeśli spróbujesz użyć:
i otrzymam błąd:
Oznacza to, że
DATE_FIELD
nie jest określony w sekundach.W moim przypadku były to miliony sekund -
EPOCH time
.Konwersja działała przy użyciu poniższych:
źródło
Zakładając, że zaimportowaliśmy
pandas as pd
idf
jest naszą ramką danychpracuje dla mnie.
źródło
Alternatywnie, zmieniając wiersz powyższego kodu:
Powinien też działać.
źródło