Select 下拉值而不是滑块值来过滤 Dataframe 中的行

Select dropdown value instead of slider value to filter rows in Dataframe

使用 plotly 中的破折号,我想按两列过滤函数中的数据框,使用一列中滑块的值和另一列下拉列表中的值。您如何区分脚本中的两个“值”变量以过滤数据帧?

这是我目前所拥有的

app.layout = html.Div([
dcc.Graph(id='chart-with-slider'),
dcc.Dropdown(id='dropdown', options=[
    {'label':i, 'value': i} for i in df['Name'].unique()
], 
    value=value[0],
    multi=False,
    clearable=False,
    placeholder='Choose Drug'),
dcc.RangeSlider(
    id='quarter-slider',
    min=numdate[0],
    max=numdate[-1],
    value=[numdate[0], numdate[-1]],
    marks={numd:date.strftime('%b%Y') for numd,date in zip(numdate, df['Quarter'].dt.date.unique())},
    step=None
)

])

@app.callback(
Output('chart-with-slider', 'figure'),
Output('table-container', 'children'),
Input('dropdown', 'value'),
Input('quarter-slider', 'value'))

def update_figure(value, dropdown.value):

global df

dfPats = df.loc[(df['fQtr'] == value[0]) & df['Name'] == dropdown.value[0], 
['PatientNum']]'''

如您所见,我尝试了以下内容,但正如我所怀疑的那样,没有这样的语法。

dropdown.value[0] 

导致 Output('table-container', 'children') 输出错误的更新脚本如下:

    dcc.Graph(id='chart-with-slider'),
    dcc.Dropdown(id='dropdown', options=[
    {'label':i, 'value': i} for i in df['NDCName'].unique()
], 
    multi=False,
    clearable=False,
    placeholder='Choose Drug'),
    html.Div(id='table-container'),
    dcc.RangeSlider(
        id='quarter-slider',
        min=numdate[0],
        max=numdate[-1],
        value=[numdate[0], numdate[-1]],
        marks={numd:date.strftime('%m%Y') for numd,date in zip(numdate, df['Quarter'].dt.date.unique())},
        step=None
    )
])

@app.callback(
    Output('chart-with-slider', 'figure'),
    Output('table_container', 'children'),
    Input('dropdown', 'value'),
    Input('quarter-slider', 'value'))

def update_figure(dropdown_value, slider_value):```

输入(和状态)根据输入的数量和顺序对应于回调函数中的参数 and/or 状态。

参数的名称不必与它映射到的 属性 或 ID 对应。它可以是任何你想要的,只要它遵循参数的 Python 语法规则。

参数名称中不能包含 .(例如:dropdown.value)。那是无效的语法。

您也可以这样做:

@app.callback(
    Output("chart-with-slider", "figure"),
    Output("table-container", "children"),
    Input("dropdown", "value"),
    Input("quarter-slider", "value"),
)
def update_figure(dropdown_value, slider_value):
    # Do something...

第一个输入对应第一个函数参数,第二个输入对应第二个函数参数,依此类推...