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.

El DateTimeIndex desaparece después de una fusión. ¿Por qué?

Tengo un dataframe con más de 1000 registros. El índice está en la fecha de reserva.

    <class 'pandas.core.frame.DataFrame'>
    DatetimeIndex: 1642 entradas, 2021-01-03 a 2021-12-16
    Columnas de datos (total 26 columnas):
     #   Columna                    Non-Null Count  Dtype         
    ---  ------                     --------------  -----         
     0   bankrek                    1642 no nulos   object        
     1   Munt                       1642 no nulos   object        
     ......
     ......       
     23  Oorspr munt                0 no nulos      float64       
     24  Koers                      0 no nulos      float64       
     25  categoría                  1642 no nulos   object        
    dtypes: datetime64[ns](1), float64(9), int64(1), object(15)
    uso de memoria: 346.4+ KB

Después de hacer un .merge, mi DateTimeIndex ha desaparecido. El merge realiza una búsqueda en la tabla de categorías y agrega dos columnas de texto.

dfIn = dfIn.merge(dfGrootboek, how="left", on="categoría")
dfIn.info()

<class 'pandas.core.frame.DataFrame'>
ÍndiceInt64: 1642 entradas, 0 a 1641
Columnas de datos (total 28 columnas):
 #   Columna                    Non-Null Count  Dtype         
---  ------                     --------------  -----         
 0   bankrek                    1642 no nulos   object        
 1   Munt                       1642 no nulos   object        
 2   BIC                        1642 no nulos   object        
 3   Volgnr                     1642 no nulos   int64         
 ....

 ....      
 23  Oorspr munt                0 no nulos      float64       
 24  Koers                      0 no nulos      float64       
 25  categoría                  1642 no nulos   object        
 26  Grootboek                  1578 no nulos   object        
 27  Kleinboek                  1578 no nulos   object        
dtypes: datetime64[ns](1), float64(9), int64(1), object(17)
uso de memoria: 372.0+ KB

La salida es como se desea, excepto por el hecho de que mi índice de fecha ha desaparecido, en su lugar veo números. Quiero mantener el índice de fecha porque lo necesito para el reporte por mes y demás. ¿Qué estoy haciendo mal aquí?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que la operación de fusión está creando un nuevo índice basado en el orden de las filas en el DataFrame resultante. Para mantener el índice datetime original, puedes restablecer el índice antes de la operación de fusión y luego volver a establecerlo después de la operación de fusión utilizando el método set_index.

    Aquí hay un ejemplo:

    # restablecer el índice
    dfIn = dfIn.reset_index()
    
    # realizar la fusión
    dfIn = dfIn.merge(dfGrootboek, how='left', on='category')
    
    # volver a establecer el índice como índice datetime
    dfIn = dfIn.set_index('index')
    

    Esto debería preservar tu índice datetime original.

Comments are closed.