Wie konvertiere ich einen Pandas-Index von Zeichenfolgen in das Datum / Uhrzeit-Format?
Mein Datenrahmen 'df' ist so
value
2015-09-25 00:46 71.925000
2015-09-25 00:47 71.625000
2015-09-25 00:48 71.333333
2015-09-25 00:49 64.571429
2015-09-25 00:50 72.285714
aber der index ist vom typ string, aber ich brauche ein datetime format, weil ich den fehler bekomme
'Index' object has no attribute 'hour'
beim Benutzen
df['A'] = df.index.hour
df.index.to_datetime()
oderdf.index = pandas.to_datetime(df.index)
(Ersteres ist jetzt veraltet).datetime
ohne Probleme konvertierttype(df.index[1]) == pandas.tslib.Timestamp
. Haben Sie schlechte Daten im Rest des Datenrahmens?pandas.to_datetime
wird den Rest erklären.Antworten:
Es sollte wie erwartet funktionieren. Versuchen Sie, das folgende Beispiel auszuführen.
import pandas as pd import io data = """value "2015-09-25 00:46" 71.925000 "2015-09-25 00:47" 71.625000 "2015-09-25 00:48" 71.333333 "2015-09-25 00:49" 64.571429 "2015-09-25 00:50" 72.285714""" df = pd.read_table(io.StringIO(data), delim_whitespace=True) # Converting the index as date df.index = pd.to_datetime(df.index) # Extracting hour & minute df['A'] = df.index.hour df['B'] = df.index.minute df # value A B # 2015-09-25 00:46:00 71.925000 0 46 # 2015-09-25 00:47:00 71.625000 0 47 # 2015-09-25 00:48:00 71.333333 0 48 # 2015-09-25 00:49:00 64.571429 0 49 # 2015-09-25 00:50:00 72.285714 0 50
quelle
Sie könnten explizit erstellen ein ,
DatetimeIndex
wenn der Datenrahmen zu initialisieren. Angenommen, Ihre Daten liegen im Zeichenfolgenformat vordata = [ ('2015-09-25 00:46', '71.925000'), ('2015-09-25 00:47', '71.625000'), ('2015-09-25 00:48', '71.333333'), ('2015-09-25 00:49', '64.571429'), ('2015-09-25 00:50', '72.285714'), ] index, values = zip(*data) frame = pd.DataFrame({ 'values': values }, index=pd.DatetimeIndex(index)) print(frame.index.minute)
quelle
index, values = zip(*data.items())
Ich gebe nur eine andere Option für diese Frage - Sie müssen '.dt' in Ihrem Code verwenden:
quelle