Esta es mi serie de tiempo:

Time
00:00:00    24.364387
00:01:00    24.509357
00:02:00    24.484649
00:03:00    24.476170
00:04:00    24.458480
00:05:00    24.439327
Name: Vals, dtype: float64

¿Cómo puedo acceder a los valores en función de un intervalo de índice específico? ¿Como myseries['00:02:00':'00:05:00']? Pensé que tenía que convertirlos en marcas de tiempo (pero horas, minutos y segundos solamente).

Entonces lo he convertido en un marco de datos:

df=pd.DataFrame({'Time':myseries.index, 'Vals':myseries.vals})

Si escribo df.dtypes obtengo:

Vals            float64
Time            object
dtype: object

Entonces Time es un objeto y no un datetime64[ns]. Luego trato de hacer: df['Time'].dt.time pero luego obtengo: AttributeError: Can only use .dt accessor with datetimelike values.

Si intento: df.loc['00:00:00':'00:05:00'], solo obtengo mis encabezados. ¿Qué me estoy perdiendo?

0
FaCoffee 30 oct. 2017 a las 18:09

3 respuestas

La mejor respuesta

Aquí está mi intento:

import datetime as dt myseries = pd.DataFrame([24.364387,24.509357,24.484649,24.476170,24.458480,24.439327], index=pd.to_timedelta(['00:00:00','00:01:00','00:02:00','00:03:00','00:04:00','00:05:00'])) myseries.loc[dt.timedelta(minutes=1):dt.timedelta(minutes=3)]

1
jujuBee 30 oct. 2017 a las 16:32

Puede estar en su caso, no necesita convertir en absoluto. Cuando convierta la serie en un marco de datos, haga lo siguiente:

df = pd.DataFrame(myseries, columns=['Vals'])

Entonces intenta

df.loc['00:00:00':'00:05:00']
1
Pal 30 oct. 2017 a las 15:45

Necesita usar la función pd.to_datetime (Series). Aquí está el código:

df.Time = pd.to_datetime(df.Time)

df.dtypes
Time     datetime64[ns]
Vals           float64
dtype: object
1
Pal 30 oct. 2017 a las 15:18