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.

Cuadro de lista de las columnas del dataframe utilizando PySimpleGUI

Estoy tratando de usar PySimpleGUI para crear una lista desplegable de las series de Pandas que representan las columnas de una hoja de Excel o un archivo CSV (ambos con encabezados). Esta lista debe actualizarse dinámicamente en función de la entrada recibida de sg.FileBrowse para que el usuario pueda seleccionar entre todos los encabezados/nombres de las columnas disponibles. Por ejemplo, si ingreso un archivo con el siguiente diseño, esperaría tener una lista desplegable de “Ubicación”, “Latitud”, “Longitud”, etc.

¿Alguna idea de cómo abordar esto?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Un enfoque sería utilizar la biblioteca pandas para leer el archivo de entrada, extraer los nombres de las columnas y poblar la lista desplegable utilizando PySimpleGUI. Esto se puede lograr creando una función que se llame cada vez que se utiliza el navegador de archivos, el cual abre el archivo, extrae los encabezados y actualiza la lista desplegable correspondientemente.

    Aquí hay un ejemplo de fragmento de código que demuestra este enfoque:

    import PySimpleGUI as sg
    import pandas as pd
    
    # define el diseño de la ventana PySimpleGUI
    layout = [
        [sg.Text('Selecciona un archivo:')],
        [sg.Input(key='_FILEBROWSE_'), sg.FileBrowse()],
        [sg.Text('Selecciona una columna:')],
        [sg.Combo([], key='_COLUMN_')],
        [sg.Button('Ok'), sg.Button('Cancelar')]
    ]
    
    # crea la ventana PySimpleGUI
    ventana = sg.Window('Ventana de prueba', layout)
    
    # bucle de eventos
    while True:
        evento, valores = ventana.read()
    
        if evento in (None, 'Cancelar'):
            break
    
        if evento == '_FILEBROWSE_':
            # lee el archivo seleccionado y extrae los encabezados
            datos = pd.read_csv(valores['_FILEBROWSE_'])
            encabezados = list(datos.columns)
    
            # actualiza la lista desplegable con los encabezados
            ventana['_COLUMN_'].update(values=encabezados)
    
        if evento == 'Ok':
            # obtiene la columna seleccionada de la lista desplegable
            columna_seleccionada = valores['_COLUMN_']
            print(f'La columna seleccionada es: {columna_seleccionada}')
    
    # cierra la ventana y sale del programa
    ventana.close()
    

    En este fragmento de código, la ventana PySimpleGUI se define con un campo de entrada de navegador de archivos y una lista desplegable. La lista desplegable está inicialmente vacía <[]>, pero se llenará con los nombres de los encabezados una vez que se seleccione un archivo. La función read() de la ventana se utiliza para escuchar los eventos, incluidos los cambios de selección del navegador de archivos, y el archivo seleccionado se lee utilizando pandas. La función update() se utiliza para poblar la lista desplegable con los encabezados extraídos. Por último, se recupera la columna seleccionada de la lista desplegable cuando se presiona el botón “Ok”.

Comments are closed.