Ipywidgets interact 不会将 datepicker 应用于 DataFrame

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


第一次尝试交互式小部件工作正常。它调用数据帧,并使用滑动小部件通过列的结果(作业打开的天数)来限制返回的行:


from ipywidgets import interact, interactive, fixed, interact_manual

import ipywidgets as widgets

@interact

def days_open_widget(column='days_open', x=(0,2000,5)):

    return df.loc[df[column] > x]

接下来,我希望能够使用两个日期选取器分别浏览 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

我不确定我错过了什么。我不确定为什么尝试访问DataFrame时,当我之前访问它时,它会给我一个“对象不可调用”错误,或者为什么DatePickers成功读取DataFrame列,但随后断开连接。


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


编辑:我知道代码很混乱,事后看来,我不认为我应该单独导入交互,交互式,固定interact_manual,然后导入所有ipywidgets。


编辑2:我无法让AC24的解决方案工作,但我认为这更多地与我自己无法正确定义过滤数据帧的函数有关。我最终找到了QGrid,它有一个日期拾取器以及其他过滤器。


有关QGrid的更多信息,https://qgrid.readthedocs.io/en/latest/ 但如果有人对如何定义函数以将数据帧作为函数传递有更明确的描述,请随时添加它。


慕妹3242003
浏览 152回答 1
1回答

慕容708150

请注意,其行为与装饰器不同。使用 时,第一个参数应该是一个函数/可调用的函数,当您更改任何小部件时,将调用该函数/可调用参数。您作为第一个参数传入数据帧,因此尝试使用start_date和end_date关键字作为函数进行调用。因此会出现错误,因为数据帧不可调用。interactinteractiveinteractdfinteractdf例如,查看文档,您可能希望构建一个简单的函数来过滤数据帧,并将该函数名称用作 的第一个参数。interacthttps://ipywidgets.readthedocs.io/en/latest/examples/Using%20Interact.html#Basic-interact
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java