2016-06-15 11 views
5

Mam dataframe w pand z poniższego formularza:pandy dataframe resample dziennie bez indeksu czasu data

 timestamps   light 
7 2004-02-28 00:58:45 150.88 
26 2004-02-28 00:59:45 143.52 
34 2004-02-28 01:00:45 150.88 
42 2004-02-28 01:01:15 150.88 
59 2004-02-28 01:02:15 150.88 

Tutaj pamiętać, że indeks nie jest kolumna sygnatury czasowe. Ale chcę ponownie próbkować (lub sortować dane w jakiś sposób), aby odzwierciedlić średnią wartość kolumny światła na minutę, godzinę, dzień itd. Rozglądałem się w metodzie resample, która oferuje oferty pand i wymaga, aby ramka danych miała indeks datatime aby metoda zadziałała (chyba, że ​​źle to zrozumiałem).

  1. Tak więc moje pierwsze pytanie brzmi, czy mogę ponownie indeks podczas dataframe mieć znaczniki czasu jako indeks (Należy pamiętać, że nie każdy wiersz posiada unikalny znacznik czasu i dla każdego znacznika czasu istnieje około 30 wierszy z tym samym znacznikiem czasu , każdy reprezentujący czujnik).

  2. Jeśli nie, czy jest jakiś inny sposób, aby ewentualnie osiągnąć inną ramkę danych, która ma średnią wartość światła na godzinę, na dzień, na miesiąc itd ..?

Każda pomoc zostanie doceniona.

Odpowiedz

5

Masz rację - trzeba DatetimeIndex, TimedeltaIndex lub PeriodIndex błąd else:

TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'Index'

Więc trzeba pierwszym reset_index i set_index jeśli oryginalna index jest ważne:

print (df.reset_index().set_index('timestamps')) 
        index light 
timestamps       
2004-02-28 00:58:45  7 150.88 
2004-02-28 00:59:45  26 143.52 
2004-02-28 01:00:45  34 150.88 
2004-02-28 01:01:15  42 150.88 
2004-02-28 01:02:15  59 150.88 

jeśli nie tylko set_index:

print (df.set_index('timestamps')) 
         light 
timestamps     
2004-02-28 00:58:45 150.88 
2004-02-28 00:59:45 143.52 
2004-02-28 01:00:45 150.88 
2004-02-28 01:01:15 150.88 
2004-02-28 01:02:15 150.88 

a następnie resample:

print (df.reset_index().set_index('timestamps').resample('1D').mean()) 
      index light 
timestamps     
2004-02-28 33.6 149.408