Python/IPyWidget与多个函数交互
我正在使用Interactive理解和创建问题函数,并创建一个调用最终结果的主函数 这里是一个数据帧: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
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框,最后是一个动态数据框,用于锁定在主功能中执行的小部件的选定值: