【问题标题】:Extract df for multi choices in dash (pandas)提取 df 以在破折号(熊猫)中进行多项选择
【发布时间】:2021-04-23 10:27:13
【问题描述】:

我正在用 plotly 创建一个仪表板。我有一个冗长的代码。我在下面添加了一个有错误的部分。

@app.callback(
    Output(component_id='bar1', component_property='figure'),
    Input(component_id='bank_dd', component_property='value'))


def update_figure(selected_bank):
    filter = vault['Bank']==selected_bank
    filtered_bank = vault[vault['Bank'].apply(lambda x: x == selected_bank)]
    fig = px.bar(filtered_bank, x='Bank', y='Bundles')

    return fig

当我在下拉列表中使用multi = False 时,仪表板工作正常。每当我将选项设置为 True 时,代码都会引发以下错误。

ValueError: Lengths must match to compare

下拉代码如下。

c_bank = vault['Bank'].unique()
cb_banks = dcc.Dropdown(id='bank_dd',
    options=[{"label": bank, "value": bank} for bank in c_bank],
    multi=True,
    placeholder="Select a Bank",
    style={'width':'500px','margin':'5px'}) 

我想问题在于过滤数据。但我想不通。

【问题讨论】:

    标签: python pandas drop-down-menu plotly-dash


    【解决方案1】:

    这与 dash 包有关。当您使用多下拉菜单时,回调会在您的函数中输入一个列表,其中包含选定的银行名称。而且您的 pandas 过滤器认为,您希望将系列与列表的值(按行)进行比较,而不是对其进行子集化。 (顺便说一句。您甚至没有使用过滤器系列,并且对于简单的子集任务来说,filtered_bank 有点过于复杂)

    我宁愿这样做:

    def update_figure(selected_bank):
    
        filtered_bank = vault[vault['Bank'].isin(selected_bank)]
    
        fig = px.bar(filtered_bank, x='Bank', y='Bundles')
    
        return fig
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-21
      • 2020-11-19
      • 2017-05-01
      • 2019-10-23
      • 1970-01-01
      • 2021-01-10
      • 2021-03-03
      相关资源
      最近更新 更多