2013-04-01 33 views
15

Ich habe eine Tabelle von Daten aus einer CSV-Datei in einen DataFrame importiert.Python Pandas - Datum Spalte zu Spalte Index

Die Daten enthalten rund 10 kategorische Felder, 1 Monat Spalte (im Datumsformat) und der Rest sind Datenreihen.

Wie konvertiere ich die Datumsspalte in einen Index über die Spaltenachse?

+1

[read_csv] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.io.parsers.read_csv.html) tut dies, indem selbst wenn Sie die Funktion aufrufen, mit die 'index_col' und' parse_dates = True' –

Antwort

22

können Sie set_index verwenden:

df.set_index('month') 

Zum Beispiel:

In [1]: df = pd.DataFrame([[1, datetime(2011,1,1)], [2, datetime(2011,1,2)]], columns=['a', 'b']) 

In [2]: df 
Out[2]: 
    a     b 
0 1 2011-01-01 00:00:00 
1 2 2011-01-02 00:00:00 

In [3]: df.set_index('b') 
Out[3]: 
      a 
b    
2011-01-01 1 
2011-01-02 2 
+0

Danke Andy Kann ich den Index so einstellen, dass das Datum auf der anderen Achse liegt? Wird diese Gruppe die Werte? – MrHopko

+1

Können Sie ein Beispiel DataFrame geben, die Sie haben und was Sie wollen? Ich bin nicht sicher, wie es sinnvoll ist, eine Datumsspalte zu einem Spaltenindex zu machen ... Es wird die Werte nicht gruppieren, dies macht eine Spalte zum Index. :) –

+0

Ich möchte die Daten so angeordnet, dass jede Spalte 1 Monat darstellt. Jede Zeile in der Tabelle repräsentiert eine andere Zeitreihe. Ist das sinnvoll? Ich würde mit einer Tabelle demonstrieren, aber ich habe keine Idee, wie man eine Tabelle auf dieser Website einfügt. – MrHopko

4

ich ähnliches Problem hatte ich nur von reset_index gelöst haben. Aber Sie können entweder set_index oder reset_index verwenden:

ind_df=df.set_index(['A', 'B'])

df.reset_index(level=0, inplace=True) 
3

Wenn Sie nicht wissen, den Namen der Datumsspalte vor der Zeit und müssen den Index automatisch auf der Zeitreihe Spalte setzen, basierend auf die Daten

df.set_index((df.select_dtypes(include=[np.datetime64]).columns).tolist()) 
Verwandte Themen