2015-03-10 14 views
8

Ho un DataFrame il cui indice è solo datetime.time e non esiste alcun metodo in DataFrame.Index e datetime.time per spostare il tempo. datetime.time ha sostituito ma funzionerà solo su singoli elementi della serie?Come aggiungere/sottrarre tempo (ore, minuti, ecc.) Da un oggetto DataFrame.Index di Pandas che gli oggetti sono di tipo datetime.time?

Ecco un esempio di indice utilizzato:

In[526]: dfa.index[:5] 
Out[526]: Index([21:12:19, 21:12:20, 21:12:21, 21:12:21, 21:12:22], dtype='object') 

In[527]: type(dfa.index[0]) 
Out[527]: datetime.time 
+1

http://stackoverflow.com/questions/19820280/add-a-date-offset-to-a-pandas- data-index –

+0

Qual è l'output di tipo (df.index)? –

+0

@MostafaMahmoud pandas.core.index.Index ma se digito (df.index [0]) che è datetime.time. – DreamAwake

risposta

12

collegamento di Liam sembra grande, ma anche controllare pandas.Timedelta - sembra che gioca bene con NumPy e di delta del tempo di Python.

http://pandas.pydata.org/pandas-docs/dev/timedeltas.html

pd.date_range('2014-01-01', periods=10) + pd.Timedelta(days=1) 
+2

L'utilizzo di df.index + pd.Timedelta (ore = 12) mi dà l'errore "TypeError: tipi di operando non supportati per +:" numpy.ndarray "e" Timedelta "". L'indice stesso è pandas.core.index.Index ma ogni valore è un datetime.time che interferisce in qualche modo con il metodo tshift() e le aggiunte Timedelta. – DreamAwake

+0

Vedi il commento di Mostafa sulla tua domanda originale re. conversione in 'Timestamps'. – Alex

+0

@MostafaMahmoud siete davvero in grado di prendere una serie o un indice di valori datetime.time e convertire direttamente con pandas.Timestamp() o anche con il metodo .to_timestamp()? Questi solo generano errori per me. Sto considerando di unire il datetime.time a una data e di formare un DatetimeIndex a titolo definitivo, ma non è ottimale dal momento che il mio set di dati registra solo il tempo. – DreamAwake

0

Questo ha funzionato per me:

>> print(df) 
          TotalVolume Symbol 
2016-04-15 09:00:00  108400  2802.T 
2016-04-15 09:05:00  50300  2802.T 

>> print(cur_df.set_index(pd.to_datetime(cur_df.index.values) - datetime(2016, 4, 15))) 

      TotalVolume Symbol 
09:00:00  108400  2802.T 
09:05:00  50300  2802.T 
Problemi correlati