我正在尝试在jupyter笔记本中嵌入交互式数据框。
基本上,我想在数据框中的某些单元格内呈现自己的HTML。
首先,我正在尝试编写自己的类,这些类具有__repr__
返回带有HTML的字符串,并使用to_htm(escape = False)在笔记本中呈现数据框,如下所示:
class Test():
def _repr_html_(self):
return "<b>Test</b>"
def to_html(self):
return self._repr_html_()
def __repr__(self):
return self._repr_html_()
我可以用以下方法对此进行测试:
from IPython.display import HTML
HTML(pd.DataFrame({'a':[Test()]}).to_html(escape=False))
这可行,但是现在我试图添加一个实际上有用的html,我发现最快的方法是使用ipywidgets
,但是缺少了一些东西,因为以下示例失败了:
from ipywidgets import Button
HTML(pd.DataFrame({'a':[Button()]}).to_html(escape=False))
Pandas调用Button的__repr__
,但显然不是ipywidgents
呈现HTML的方式。
所以我在这里错过了一些技巧,还是创建交互式数据帧的解决方案完全不同。
当我说交互式数据框时,请务必清楚一点,我希望每次单击该单元格时都有一个按钮或东西会调用python函数。