2017-01-02 1 views
4

Ich habe einen Datenrahmen durch den Import einer CSV-Datei erstellt. Und die Datumsspalte wurde in datetime konvertiert und zum Index gemacht. Wenn jedoch den Sortier-Index nicht das Ergebnis, das ichpandas Datenrahmen sortieren nach Datum

wollte
print(df.head()) 
df['Date'] = pd.to_datetime(df['Date']) 
df.index = df['Date'] 
del df['Date'] 
df.sort_index() 
print(df.head()) 

Hier produziert ist das Ergebnis:

  Date  Last 
0 2016-12-30 1.05550 
1 2016-12-29 1.05275 
2 2016-12-28 1.04610 
3 2016-12-27 1.05015 
4 2016-12-23 1.05005 
       Last 
Date    
2016-12-30 1.05550 
2016-12-29 1.05275 
2016-12-28 1.04610 
2016-12-27 1.05015 
2016-12-23 1.05005 

Das Datum tatsächlich bis 1999 zurückgeht, also wenn ich dies nach Datum sortieren, es sollte die Daten in aufsteigender Reihenfolge anzeigen, oder?

+6

Tun Sie entweder 'df.sort_index (inplace = True)' oder 'df = df.sort_index()' – MaxU

+0

Vielleicht besser zu 'df.set_index ('Date ', drop = True) 'zum Ändern des Indexes. – quapka

Antwort

1

Einfach die korrekte Antwort von MaxU erweitern: Sie haben die korrekte Methode verwendet, aber wie bei vielen anderen Pandas-Methoden müssen Sie den Datenrahmen "neu erstellen", damit die gewünschten Änderungen wirksam werden. Da das MAXU bereits angedeutet, wird diese wieder durch die Eingabe des variablen erreicht (auf „Speicher“ die Ausgabe des verwendeten Verfahrens in die gleiche Variable), zB:

df = df.sort_index()

oder durch die Kraft des Attributs Nutzbarmachung inplace=True , die den Inhalt der Variablen ersetzen wird, ohne dass sie neu deklariert werden muss.

df.sort_index(inplace=True)

Doch meiner Erfahrung, ich fühle mich oft als "sicherer" die erste Option. Es sieht auch klarer und normalisierter aus, da nicht alle Methoden die inplace Verwendung anbieten. Aber ich komme alles auf Scripting sytle ich denke ...