【问题标题】:Jupyter Notebook Widgets: Create dependent dropdownsJupyter Notebook 小部件:创建相关下拉列表
【发布时间】:2018-01-27 00:07:03
【问题描述】:

我想在我的 Jupyter Notebook 中创建 2 个下拉小部件。下拉内容取自数据框。

假设我有一个由 3 个分类变量“a”、“b”、“c”组成的 pandas 数据框。 'a' 有 3 个子类型 'a1'、'a2' 和 'a3'。 'b' 和 'c' 与 a 相似,因为它们也有自己的子类型。我想创建 2 个下拉小部件:第一个下拉小部件将具有 ['a','b','c'],第二个下拉小部件将根据用户为第一个小部件选择的变量显示子类型。

老实说,我知道如何做到这一点。我会尝试为此写一些代码:

import pandas as pd
from IPython.display import *
import ipywidgets as widgets
from ipywidgets import *

# Create the dataframe
df = pd.DataFrame([['a1','a2','a3'],
             ['b1','b2','b3'],
             ['c1','c2','c3']], index = ['a','b','c']).transpose()

# Widgets
widget1 = Dropdown(options = ['a','b','c'])
display(widget1)
widget2 = Dropdown(???????)
display(widget2)

根据我为两个下拉小部件选择的内容,我希望执行一些功能。

感谢任何帮助。

【问题讨论】:

    标签: python pandas widget jupyter


    【解决方案1】:

    我发现了如何做到这一点。我希望这对其他想要做同样事情的人有所帮助。

    x_widget = Dropdown(options = ['a','b','c'])
    y_widget = Dropdown()
    
    # Define a function that updates the content of y based on what we select for x
    def update(*args):
        y_widget.options = df[x_widget.value].unique().tolist()
    x_widget.observe(update)
    
    # Some function you want executed
    def random_function():
    ...
    
    interact(random_function,
             x = x_widget,
             y = y_widget);
    

    【讨论】:

    • 我遇到了类似的情况,第二个下拉菜单的选项取决于第一个下拉菜单的值。我一直在努力寻找一种合适的方法来解决这个问题。您的答案非常接近我的需要。非常感谢!
    猜你喜欢
    • 2018-07-02
    • 2021-02-09
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    • 2018-03-10
    • 1970-01-01
    相关资源
    最近更新 更多