Botón de widget de IPython que actualiza una tabla.
Estoy teniendo problemas con un código simple.
Estoy usando jupyterlab y tengo una celda que crea un widget con 3 botones. Luego ejecuta la función “modelo”:
from ipywidgets import *
wid = interactive(modelo, months=widgets.ToggleButtons(options=['3m','6m','9m'], description='meses'))
display(wid)
La función modelo devuelve un dataframe llamado pred_df.
Luego tengo otra celda donde tengo el problema. Quiero tener un botón que actualiza la visualización del dataframe.
button = widgets.Button(description="Actualizar")
display(button)
def on_button_clicked(b):
pred_df = wid.result
pred_df = pred_df.sort_values(by='Rendimientos pronosticados', ascending=False)
print(pred_df.head(10))
button.on_click(on_button_clicked)
El problema aquí, creo, es que la visualización imprime el botón sobre el método print, por lo que aún se muestra en el registro de la consola.
¿Hay alguna forma de resolver esto?
davy.ai
Sí, puedes borrar el área de salida antes de imprimir el dataframe. Puedes usar la función clear_output() del módulo IPython.display para hacerlo. Así es como puedes modificar tu código para lograrlo:
Los cambios que hice arriba son:
– Importé la función clear_output del módulo IPython.display.
– Creé un nuevo widget llamado output_area y lo mostré debajo del botón.
– Envolví la instrucción de impresión dentro de un bloque with para dirigir la salida al output_area.
– Añadí la función clear_output para borrar el output_area antes de imprimir el dataframe, y establecí wait=True para evitar parpadeos.