2013-04-01 18 views
15

Mam tabelę danych importowanych z pliku CSV do DataFrame.Pandy Pythona - Data kolumny do kolumny Indeks

Dane zawierają około 10 zmiennych jakościowych, kolumnę 1-miesięczną (w formacie daty), a pozostałe to serie danych.

Jak przekonwertować kolumnę daty na indeks na osi kolumny?

+1

[read_csv] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.io.parsers.read_csv.html) robi to samo, jeśli odwołać się do funkcji z "indeks_col" i "parse_dates = True" –

Odpowiedz

22

Można użyć set_index:

df.set_index('month') 

Na przykład:

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

Dzięki Andy Czy mogę ustawić indeks tak, aby data była wzdłuż drugiej osi? Czy ta grupa będzie wartością? – MrHopko

+1

Czy możesz podać przykład DataFrame, który masz i czego chcesz? Nie jestem pewien, jak to ma sens, aby kolumna z datami była indeksem kolumny ... Nie będzie grupować wartości, co spowoduje, że jedna kolumna będzie indeksem. :) –

+0

Chcę danych ułożonych w taki sposób, aby każda kolumna reprezentowała 1 miesiąc. Każdy wiersz w tabeli reprezentuje inną serię czasową. Czy to ma sens? Chciałbym zademonstrować przy stole, ale nie mam pojęcia, jak wstawić tabelę na tej stronie. – MrHopko

4

miałem podobny problem, ja właśnie rozwiązany przez reset_index. Ale można użyć set_index lub reset_index:

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

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

Jeśli nie znasz nazwy kolumny dat z wyprzedzeniem i trzeba ustawić indeks automatycznie na podstawie szeregów czasowych w kolumnie dane

df.set_index((df.select_dtypes(include=[np.datetime64]).columns).tolist()) 
Powiązane problemy