2017-08-18 44 views
1

我想在Jupyter笔记本中创建2个下拉小工具。下拉内容取自数据框。Jupyter笔记本小工具:创建相关下拉列表

比方说,我有一个由3个分类变量'a','b','c'组成的熊猫数据框。 'a'有3个亚型'a1','a2'和'a3'。 'b'和'c'类似于他们也有自己的亚型的意义。我想创建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) 

而且取决于我选择了两个下拉窗口小部件,我想了一些功能来执行。

任何帮助表示赞赏。

回答

2

我发现如何做到这一点。我希望这对那些也在做同样的事情的人有帮助。

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);