【问题标题】:Use Holoviz Panel Dropdown value to query dataframe使用 Holoviz Panel Dropdown 值查询数据框
【发布时间】:2020-07-14 18:38:58
【问题描述】:

我正在尝试使用 Holoviz Panel 下拉小部件值来查询数据框。然而,数据框并不反映下拉值的变化。我添加了一个降价小部件来检查下拉值的变化是否被捕获 - 似乎是。但是,我不知道如何更新数据框。我是一个完全的编程初学者,只是想学习。任何帮助表示赞赏。

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)

Output Image

【问题讨论】:

  • 乍一看,您定义了一个回调,但没有在任何地方注册它。

标签: python panel pyviz holoviz


【解决方案1】:

想通了,原来我只需要在我的查询函数上方添加@pn.depends。一旦我添加了 pn.depends(a2, watch=True),数据帧就会根据 a2 输入进行过滤。回调和观察者是不必要的。

【讨论】:

    猜你喜欢
    • 2020-05-26
    • 2022-11-08
    • 2015-09-17
    • 2020-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-03
    • 2020-02-19
    相关资源
    最近更新 更多