Python Pandas convertir el índice a datetime

¿Cómo puedo convertir un índice de pandas de cadenas al formato de fecha y hora?

mi dataframe ‘df’ es así

value 2015-09-25 00:46 71.925000 2015-09-25 00:47 71.625000 2015-09-25 00:48 71.333333 2015-09-25 00:49 64.571429 2015-09-25 00:50 72.285714 

pero el índice es de tipo cadena, pero necesito un formato de fecha y hora porque recibo el error

 'Index' object has no attribute 'hour' 

cuando usas

  df['A'] = df.index.hour 

Debería funcionar como se espera. Intenta ejecutar el siguiente ejemplo.

 import pandas as pd import io data = """value "2015-09-25 00:46" 71.925000 "2015-09-25 00:47" 71.625000 "2015-09-25 00:48" 71.333333 "2015-09-25 00:49" 64.571429 "2015-09-25 00:50" 72.285714""" df = pd.read_table(io.StringIO(data), delim_whitespace=True) # Converting the index as date df.index = pd.to_datetime(df.index) # Extracting hour & minute df['A'] = df.index.hour df['B'] = df.index.minute df # value AB # 2015-09-25 00:46:00 71.925000 0 46 # 2015-09-25 00:47:00 71.625000 0 47 # 2015-09-25 00:48:00 71.333333 0 48 # 2015-09-25 00:49:00 64.571429 0 49 # 2015-09-25 00:50:00 72.285714 0 50 

Acabo de dar otra opción para esta pregunta: debe usar ‘.dt’ en su código:

 import pandas as pd df.index = pd.to_datetime(df.index) #for get year df.index.dt.year #for get month df.index.dt.month #for get day df.index.dt.day #for get hour df.index.dt.hour #for get minute df.index.dt.minute 

Podría crear explícitamente un DatetimeIndex al inicializar el dataframe. Suponiendo que sus datos están en formato de cadena

 data = [ ('2015-09-25 00:46', '71.925000'), ('2015-09-25 00:47', '71.625000'), ('2015-09-25 00:48', '71.333333'), ('2015-09-25 00:49', '64.571429'), ('2015-09-25 00:50', '72.285714'), ] index, values = zip(*data) frame = pd.DataFrame({ 'values': values }, index=pd.DatetimeIndex(index)) print(frame.index.minute)