Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Holoviz面板下拉值查询数据帧_Python_Panel_Pyviz_Holoviz - Fatal编程技术网

Python 使用Holoviz面板下拉值查询数据帧

Python 使用Holoviz面板下拉值查询数据帧,python,panel,pyviz,holoviz,Python,Panel,Pyviz,Holoviz,我试图使用Holoviz面板下拉小部件值来查询数据帧。但是,数据帧并不反映下拉值中的更改。我添加了一个markdown小部件来检查下拉值的变化是否被捕获——看起来是这样的。但是,我不知道如何更新数据帧。我是一个完全的编程初学者,只是在努力学习。感谢您的帮助 import pandas as pd import panel as pn pn.extension() # Dataframe df = pd.DataFrame({'CcyPair':['EUR/USD', 'AUD/USD' ,'

我试图使用Holoviz面板下拉小部件值来查询数据帧。但是,数据帧并不反映下拉值中的更改。我添加了一个markdown小部件来检查下拉值的变化是否被捕获——看起来是这样的。但是,我不知道如何更新数据帧。我是一个完全的编程初学者,只是在努力学习。感谢您的帮助

import pandas as pd
import panel as pn
pn.extension()

# Dataframe

df = pd.DataFrame({'CcyPair':['EUR/USD', 'AUD/USD' ,'USD/JPY'], 
                   'Requester':['Client1', 'Client2' ,'Client3'],
                  'Provider':['LP1', 'LP2' ,'LP3']})

# Dropdown

a2 = pn.widgets.Select(options=list(df.Provider.unique()))

# Query dataframe based on value in Provider dropdown

def query(x=a2):
    y = pn.widgets.DataFrame(df[(df.Provider==x)])
    return y

# Test Markdown Panel to check if the dropdown change returns value

s = pn.pane.Markdown(object='')

# Register watcher and define callback

w = a2.param.watch(callback, ['value'], onlychanged=False)

def callback(*events):
    print(events)
    for event in events:
        if event.name == 'value':
            df1 = query(event.new)
            s.object = event.new

# Display Output

pn.Column(query, s)

算出了,结果我只需要在我的查询函数上方添加@pn.depends。一旦我添加了pn.depends(a2,watch=True),数据帧就会根据a2输入进行过滤。回调和监视程序是不必要的。

解决了这个问题,结果我只需要在查询函数上方添加@pn.depends。一旦我添加了pn.depends(a2,watch=True),数据帧就会根据a2输入进行过滤。回调和监视程序是不必要的。

第一次查看时,您定义了回调,但没有在任何地方注册它。第一次查看时,您定义了回调,但没有在任何地方注册它。