es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Insertar fila en un dataframe de Pandas con un índice consciente de la zona horaria.

Tengo un dataframe que tiene un índice consciente de la zona horaria, y cuando intento insertar una nueva fila en este dataframe, no funciona, en cambio cambia el tipo de índice a ‘objeto’ (es decir, no puede agregar la fila al tipo actual).

MRE a continuación:

import pandas as pd

df = pd.DataFrame({“tiempo”: [“2021/06/06 12:00:00”], “col1”: [2]})
df.index = pd.to_datetime(df[‘tiempo’])
df = df.drop(‘tiempo’, axis=1)
df.index = df.index.tz_localize(‘UTC’)

No funciona, el índice ahora es ‘objeto’ ya que se considera una cadena

fila = pd.Series(name=’2021/06/05 12:00:00′)

df = df.append(fila)

Tampoco funciona, ya que las zonas horarias son diferentes

fila = pd.Series(name=pd.Timestamp(‘2021/06/05 12:00:00’))
df = df.append(fila)

print(df.index)

Entiendo que puedo hacer lo siguiente:

tz = df.index[0].tz
fila = pd.Series(name=pd.Timestamp(‘2021/06/05 12:00:00’, tz=tz))

Sin embargo, tengo dudas sobre si esto funcionaría cuando las unidades son diferentes, o quizás incluso alguna otra propiedad de un Timestamp de pandas que no conozco, por lo que idealmente me gustaría copiar completamente la configuración de Timestamp del índice al nuevo timestamp que estoy insertando.

Si alguien sabe cómo insertar una nueva fila en este dataframe manteniendo intacto el tipo de índice, sería muy apreciado.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Puede insertar una nueva fila en el dataframe manteniendo el tipo de índice intacto utilizando el método tz_convert. Este método convertirá la marca de tiempo al mismo huso horario que el índice. Por ejemplo:

    python
    tz = df.index[0].tz
    fila = pd.Series(name=pd.Timestamp('2021/06/05 12:00:00').tz_convert(tz))
    df = df.append(fila)

    Esto asegurará que la nueva fila se inserte en el dataframe con el mismo huso horario que el índice.

Comments are closed.