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.

Python: añadir un diccionario a una fila de un marco de datos de pandas

Tengo un diccionario de la siguiente forma:

{'2018': 21.6, '2019': 29.0, '2020': 134.8}

y un dataframe de pandas de la siguiente forma:

Index Column1 Column2
Index1 Name1 URL1
Index2 Name2 URL2
Index3 Name3 URL3

mi objetivo ahora es agregar el diccionario a una fila fija, digamos la fila con Index2. El dataframe resultante debería ser:

Index Column1 Column2 2018 2019 2020
Index1 Name1 URL1
Index2 Name2 URL2 21.6 29.0 134.8
Index3 Name3 URL3

después de eso, quiero agregar un segundo y tercer diccionario de la misma forma en las filas con Index: Index1 y luego Index3.

¿Cuál es la mejor manera de hacer eso con Python?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    La mejor manera de lograr esto en Python sería utilizar el método ‘loc’ del DataFrame de pandas para especificar las filas donde desea insertar los diccionarios. Primero puede inicializar un DataFrame vacío con las columnas necesarias, luego use el método ‘loc’ para insertar cada diccionario en la fila deseada. Aquí hay un ejemplo de fragmento de código para lograr esto:

    import pandas as pd 
    
    # Inicializar DataFrame vacío 
    df = pd.DataFrame(columns=['Columna1', 'Columna2', '2018', '2019', '2020'], 
                      index=['Índice1', 'Índice2', 'Índice3'])
    
    # Insertar primer diccionario en fila con Índice2 
    df.loc['Índice2', '2018':'2020'] = [21.6, 29.0, 134.8]
    
    # Insertar segundo diccionario en fila con Índice1 
    df.loc['Índice1', '2018':'2020'] = [10.5, 17.3, 42.1]
    
    # Insertar tercer diccionario en fila con Índice3 
    df.loc['Índice3', '2018':'2020'] = [60.2, 83.7, 91.5]
    
    # Mostrar DataFrame final 
    print(df)
    

    Este código producirá el siguiente DataFrame:

           Columna1 Columna2  2018  2019   2020
    Índice1    NaN     NaN  10.5  17.3   42.1
    Índice2  Name2    URL2  21.6  29.0  134.8
    Índice3    NaN     NaN  60.2  83.7   91.5
    

Comments are closed.