Python 为破折号中的多个选项提取df(熊猫)
我正在使用plotly创建仪表板。我有一个冗长的代码。我在下面添加了一个有错误的部分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
@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