我正在构建一个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/ 但如果有人对如何定义函数以将数据帧作为函数传递有更明确的描述,请随时添加它。
慕容708150
相关分类