在Jupyter笔记本中链接两个ipysheet以便可视化

时间:2020-02-16 11:51:04

标签: python jupyter-notebook spreadsheet

我想使用ipysheets和ipywidgets在jupyter笔记本中使用voila生成类似Web的用户界面。

这是一个非常强大的工具,可以非常快速地创建用户界面以实现快速的用户交互,而不必诉诸于网页,即服务器,Django,Web框架等。

我正在尝试链接两个ipysheet的单元格,一个用于输入数据,另一个用于输出数据。 每当输入数据发生更改时,输出数据表的内容应立即进行更新(在这种情况下,例如,通过单击复选框)。

from ipysheet import *
import ipywidgets as widgets
import ipysheet
import pandas as pd

# example dataframe with check boxes, (including booleans)
DF_input = pd.DataFrame(data={'a':[False,False,False],'b':[False,False,False]})
sheet_input = ipysheet.sheet(from_dataframe(DF_input))

# Output dataframe has as many columns as input dataframe but only one row
DF_m = pd.DataFrame(data={'m1':['non'],'m2':['non']})               
sheet_m = ipysheet.sheet(from_dataframe(DF_m))

# I try here to pass the cells of the current ipysheet to cell_m1 and cell_m2
cell_m1 = ipysheet.cell(0, 1)
cell_m2 = ipysheet.cell(0, 2)

I would like that this function runs every time there is a change in the Input sheet.
def calculate(change):
    mydf = to_dataframe(sheet_input)
    cell_m1.value = mydf.loc[:,'a'].any()
    cell_m2.value = mydf.loc[:,'b'].any()

# I want that the cells of the second sheet observe the changes. 
# I want to call the function calculate everytime there is a change
cell_m1.observe(calculate, 'value')
cell_m2.observe(calculate, 'value')

widgets.VBox([sheet_input,sheet_m])

这是结果:

enter image description here

尝试单击复选框时,会发生奇怪的事情:

enter image description here

我最终要做的是将第二个sheet_m的单元格链接到第一个sheet_input的值。函数compute必须获取sheet_input的所有表进行一些计算并在sheet_m中填写值。

我做了什么: 我多次阅读ipysheets的文档,最重要的是观察功能。 https://readthedocs.org/projects/ipysheet/downloads/pdf/latest/

一些帮助会很好。

0 个答案:

没有答案