Python Ipywidgets Interactive won';t将日期选择器应用于数据帧(“TypeError:';数据帧';对象不可调用”)

Python Ipywidgets Interactive won';t将日期选择器应用于数据帧(“TypeError:';数据帧';对象不可调用”),python,pandas,dataframe,datepicker,ipywidgets,Python,Pandas,Dataframe,Datepicker,Ipywidgets,我正在构建一个jupyter笔记本,它使用一些交互式小部件帮助移动一些数据帧。我的jupyter和python经验有限,到目前为止,我的大部分笔记本都在重新创建以前在一系列Excel数据透视表中创建的合并和计算 第一次尝试一个交互式小部件,效果不错。它调用dataframe,使用滑动小部件根据列的结果限制返回的行(分配打开了多少天): 接下来,我希望能够使用两个日期选择器分别探索数据帧,以在创建分配的日期之前约束结果。它的一部分工作正常,比如日期选择器填充最早和最晚的日期,但它们不绑定到数据框。

我正在构建一个jupyter笔记本,它使用一些交互式小部件帮助移动一些数据帧。我的jupyter和python经验有限,到目前为止,我的大部分笔记本都在重新创建以前在一系列Excel数据透视表中创建的合并和计算

第一次尝试一个交互式小部件,效果不错。它调用dataframe,使用滑动小部件根据列的结果限制返回的行(分配打开了多少天):

接下来,我希望能够使用两个日期选择器分别探索数据帧,以在创建分配的日期之前约束结果。它的一部分工作正常,比如日期选择器填充最早和最晚的日期,但它们不绑定到数据框。代码如下:

interact(df,
        start_date=widgets.DatePicker(value=df.assignment_creation_date.min()),
        end_date=widgets.DatePicker(value=df.assignment_creation_date.max()))
Jupyter显示日期选择器后,会出现以下错误,然后显示未过滤的数据帧

TypeError                                 Traceback (most recent call last)
C:\ProgramData\Anaconda3\lib\site-packages\ipywidgets\widgets\interaction.py in update(self, *args)
    254                     value = widget.get_interact_value()
    255                     self.kwargs[widget._kwarg] = value
--> 256                 self.result = self.f(**self.kwargs)
    257                 show_inline_matplotlib_plots()
    258                 if self.auto_display and self.result is not None:

TypeError: 'DataFrame' object is not callable
我不确定我错过了什么。我不知道为什么在我之前访问数据框时,尝试访问数据框会给我一个“object is not callable”错误,或者为什么日期选择器成功地读取了数据框列,但随后断开了连接

我试图创建的行为将调用整个数据帧,但让我在从日期选择器中选择的日期之间过滤结果行。我错过了什么

编辑:我知道代码很混乱,事后看来,我不认为我应该单独导入interact、interactive、fixed、interact\u手册,然后导入所有IPyWidget

编辑2:我无法使用AC24的解决方案,但我认为这更多是因为我自己无法正确定义过滤数据帧的函数。我最终找到了QGrid,它有一个日期选择器和其他过滤器


关于QGrid的更多信息,但如果有人对如何定义函数以将数据帧作为函数传递有更明确的描述,请随意添加。

注意,
交互
的行为与
交互
装饰器不同。当使用
交互
时,第一个参数应该是一个函数/可调用函数,当您更改任何小部件时会调用该函数/可调用函数。您传入了数据帧
df
作为第一个参数,因此
interact
正试图使用start\u date和end\u date关键字调用
df
。因此会出现错误,因为数据帧不可调用

查看文档中的示例,您可能希望构建一个简单的函数来过滤数据帧,并使用该函数名作为
交互的第一个参数


您是指def filtering_dataframe()之类的函数:返回样式还是指其他类型的函数?当我试图找到过滤数据帧的示例时,我得到了类似“df.filter(regex='[aA]')”这样的建议,我不知道如何将它们合并到def和return样式函数中。
TypeError                                 Traceback (most recent call last)
C:\ProgramData\Anaconda3\lib\site-packages\ipywidgets\widgets\interaction.py in update(self, *args)
    254                     value = widget.get_interact_value()
    255                     self.kwargs[widget._kwarg] = value
--> 256                 self.result = self.f(**self.kwargs)
    257                 show_inline_matplotlib_plots()
    258                 if self.auto_display and self.result is not None:

TypeError: 'DataFrame' object is not callable