Как использовать слово, введенное из текстового поля виджета, для поиска во фрейме данных, а затем отобразить результат поиска с использованием python, ipywidgets? - PullRequest
0 голосов
/ 26 мая 2020

Я только изучаю взаимодействие виджетов в Python и Jupyter. Моя задача:

t=pd.DataFrame({'string':['i live here','you live in eltham','machine learning','learning english','go home','go back'],
                'number':[1,3,2,3,1,2],
                'word':['a','haha','runing over there','abcdefg','aaa','bye']})

import ipywidgets as widgets
from IPython.display import display

widgets.Text(
    value='Hello World',
    placeholder='Type something',
    description='keyword:',
    disabled=False
)

enter image description here

Мне нужно ввести какое-то слово, например «live», тогда код будет автоматически искать данные кадр t и отобразить все строки с live в нем.

Я ищу подсказки, потому что не знаю, с чего начать.

1 Ответ

0 голосов
/ 26 мая 2020

наконец-то разберетесь на простом примере. просто положите сюда для тех, кому это может понадобиться.

t=pd.DataFrame({'string':['i live here','you live in eltham','machine learning','learning english','go home','go back','live home'],
                'number':[1,3,2,3,1,2,4],
                'word':['a','haha','runing over there','abcdefg','aaa','bye','hou']})

def myFUN_searchString(value,string):
    s=string.split(' ')
    return value in s

def myFUN_search(value):
    t.loc[:,'Flag']=''
    t.loc[:,'Flag']=[myFUN_searchString(value,x) for x in t.loc[:,'string']]
    return t.loc[:,'Flag']

import ipywidgets as widgets
from IPython.display import display

keyword=widgets.Text(
    value='electricity',
    placeholder='Type something',
    description='keyword:',
    disabled=False
)
display(keyword)


button = widgets.Button(description="search")
display(button)

output = widgets.Output()

@output.capture()
def on_button_clicked(b):
    t.loc[:,'Flag']=myFUN_search(keyword.value)
    t1=t.loc[(t['Flag'])]
    t1.drop(['Flag'],axis=1,inplace=True)
    t1.reset_index(drop=True,inplace=True)
    if t1.shape[0]>30:
        t1=t1.loc[0:30]

    display(t1)

button.on_click(on_button_clicked)
display(output)
...