2013-04-01 23 views
15

Ho una tabella di dati importati da un file CSV in un DataFrame.Panda Python - Data Colonna Indice indice

I dati contengono circa 10 campi categoriali, una colonna di 1 mese (in formato data e ora) e il resto sono serie di dati.

Come si converte la colonna della data in un indice attraverso l'asse della colonna?

+1

[read_csv] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.io.parsers.read_csv.html) fa questo da solo se si richiama la funzione con il 'index_col' e' parse_dates = True' –

risposta

22

È possibile utilizzare set_index:

df.set_index('month') 

Ad esempio:

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

Grazie Andy Posso impostare l'indice in modo che la data sia lungo l'altro asse? Questo gruppo raggrupperà i valori? – MrHopko

+1

Puoi dare un esempio di DataFrame che hai e cosa vuoi? Non sono sicuro di come sia ragionevole fare una colonna di date come indice di colonne ... Non raggrupperà i valori, questo rende una colonna l'indice. :) –

+0

Desidero che i dati siano disposti in modo che ogni colonna rappresenti 1 mese. Ogni riga nella tabella rappresenta una serie temporale diversa. Ha senso? Vorrei dimostrare con un tavolo ma non ho idea di come inserire una tabella su questo sito. – MrHopko

4

ho avuto problema simile che ho appena risolto da reset_index. Ma è possibile utilizzare sia set_index o reset_index:

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

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

Se non si conosce il nome della colonna della data prima del tempo e la necessità di impostare automaticamente l'indice in base alla colonna serie temporali in i dati

df.set_index((df.select_dtypes(include=[np.datetime64]).columns).tolist()) 
Problemi correlati