2017-08-18 88 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);