Python/IPyWidget与多个函数交互

Python/IPyWidget与多个函数交互,python,function,jupyter-notebook,interactive,ipywidgets,Python,Function,Jupyter Notebook,Interactive,Ipywidgets,我正在使用Interactive理解和创建问题函数,并创建一个调用最终结果的主函数 这里是一个数据帧: import pandas as pd import ipywidgets as widgets from ipywidgets import interact, interactive data = [ {"Position":"Goalkeeper","Name":"Sam", "T

我正在使用Interactive理解和创建问题函数,并创建一个调用最终结果的主函数

这里是一个数据帧:

import pandas as pd
import ipywidgets as widgets
from ipywidgets import interact, interactive

data = [
        {"Position":"Goalkeeper","Name":"Sam", "Team":"Blue", "DOB": "01/01/1990"},
        {"Position":"Defender","Name":"Rob", "Team":"Blue", "DOB": "01/01/1991"},
        {"Position":"Right Fullback", "Name":"Sara", "Team":"Red", "DOB": "01/01/1992"},
        {"Position":"Left Fullback","Name":"Sue", "Team":"Red", "DOB": "01/01/1987"},
        {"Position":"Center Back", "Name":"Alex", "Team":"Orange", "DOB": "01/01/1994"},
        {"Position":"Midfielder", "Name":"Amy", "Team":"Orange", "DOB": "01/01/1993"},
        {"Position":"Striker", "Name":"Fifi", "Team":"Purple", "DOB": "01/01/1990"},
        {"Position":"Winger", "Name":"Farrell", "Team":"Purple", "DOB": "01/01/1991"}
]
df = pd.DataFrame.from_records(data)

df['DOB'] = pd.to_datetime(df['DOB'], format = '%d/%m/%Y')
这里是我试图执行的功能:

def main(dataframe):
    dfi = index_name(dataframe)
    Period = widgets.Dropdown(options=['D', 'W', 'M', 'Y'])
    Role = widgets.SelectMultiple(options=dfi)
    dff = interactive(main_f, DataFrame=dataframe, p=Period, r=Role)
    return dff

def index_name(DataFrame):
    dfi = DataFrame.groupby([pd.Grouper(key='DOB', freq='Y'), pd.Grouper('Position')])[['Team']].count()
    dfi = dfi.index.get_level_values(1)
    return dfi

def main_f(DataFrame, p, r):
    dff = DataFrame.groupby([pd.Grouper(key='DOB', freq=p), pd.Grouper('Position')])[['Team']].count()
    dff = dff.loc[dff.index.get_level_values(1).isin(r)]
    return dff

main(df)
预期的输出将是2个小部件,一个包含在主功能中设置频率的选项,另一个包含索引名称函数值的SelectMultiple框,最后是一个动态数据框,用于锁定在主功能中执行的小部件的选定值: