Python 为破折号中的多个选项提取df(熊猫)

Python 为破折号中的多个选项提取df(熊猫),python,pandas,drop-down-menu,plotly-dash,Python,Pandas,Drop Down Menu,Plotly Dash,我正在使用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']==sel

我正在使用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:长度必须匹配才能进行比较

下拉代码如下所示

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'}) 

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

这与仪表板组件有关。当您使用multi下拉列表时,回调函数会向函数中输入一个列表,其中包含选定的银行名称。您的pandas过滤器认为,您希望将序列与列表的值进行比较(按行),而不是将其子集。(顺便说一句,您甚至没有使用过滤器系列,对于一个简单的子集设置任务,过滤的_库有点过于复杂)

我宁愿:

def update_figure(selected_bank):

    filtered_bank = vault[vault['Bank'].isin(selected_bank)]

    fig = px.bar(filtered_bank, x='Bank', y='Bundles')

    return fig