Я пытаюсь создать виджет текстового поля «фильтр по мере ввода» в моем блокноте Jupyter, в котором, если я пишу M, он отображает все проигрыватели с «M» ... если я набираю O после M, он отображает проигрыватели с «МО» в их названии (например, МОХАМЕД САЛА И МО САЛА) и так далее. Код ниже работает довольно хорошо. ЕДИНСТВЕННАЯ проблема, с которой я сталкиваюсь, состоит в том, что он продолжает добавлять результат к ячейке ... поэтому, если я напишу 3 буквы, он отобразит 3 таблицы. Я хочу очистить предыдущий вывод, чтобы у меня всегда был только самый последний результат. Как я могу это сделать?
import pandas as pd, IPython.display, ipywidgets as widgets
out = widgets.Output()
display(out)
df = pd.DataFrame ({'PLAYER':['MOHAMED SALAH', 'MESSI', 'MO SALAH', 'RONALDO']})
display(df)
textbox = widgets.Text(value='', description='Player:')
display(textbox)
def display_result(value):
value = str(value['new']).upper()
if "{" not in value:
print(value)
result = df[(df['PLAYER'].str.contains(value))]
if result.shape[0]>0: display(result)
textbox.observe(display_result)
Вывод: