如何使用 ipywidgets 在 VBOX 中显示 pandas 数据框
How to display a pandas dataframe within a VBOX using ipywidgets
我想使用 ipywidgets 以交互方式显示 pandas 数据框。到目前为止,代码获得了一些选择,然后进行了一些计算。对于这个例子,它并没有真正使用输入标签。但是,我的问题是当我想显示 pandas 数据框时,它没有被视为小部件。但是我怎样才能使用小部件很好地显示 pandas 数据框呢?最后我想在 main_box
中有一个不错的 table
这是一个代码示例,它适用于任何 jupyter notebook
import pandas as pd
import ipywidgets as widgets
def button_run_on_click(_):
status_label.value = "running...."
df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]])
status_label.value = ""
result_box = setup_ui(df)
main_box.children = [selection, button_run, status_label, result_box]
def setup_ui(df):
return widgets.VBox([df])
selection_box = widgets.Box()
selection_toggles = []
selected_labels = {}
default_labels = ['test1', "test2"]
labels = {"test1": "test1", "test2": "test2", "test3": "test3"}
def update_selection(change):
owner = change['owner']
name = owner.description
if change['new']:
owner.icon = 'check'
selected_labels[name] = labels[name]
else:
owner.icon = ""
selected_labels.pop(name)
for k in sorted(labels):
o = widgets.ToggleButton(description=k)
o.observe(update_selection, 'value')
o.value = k in default_labels
selection_toggles.append(o)
selection_box.children = selection_toggles
status_label = widgets.Label()
status_label.layout.width = '300px'
button_run = widgets.Button(description="Run")
main_box = widgets.VBox([selection_box, button_run, status_label])
button_run.on_click(button_run_on_click)
display(main_box)
from IPython.display import display
import ipywidgets as widgets
def setup_ui(df):
out = widgets.Output()
with out:
display(df)
return out
如果您将 setup_ui
函数更改为此,您可以 return 带有数据框的输出小部件。
但是,在您的 button_run_on_click
函数中,selection
未定义。这应该是其他东西吗?
我想使用 ipywidgets 以交互方式显示 pandas 数据框。到目前为止,代码获得了一些选择,然后进行了一些计算。对于这个例子,它并没有真正使用输入标签。但是,我的问题是当我想显示 pandas 数据框时,它没有被视为小部件。但是我怎样才能使用小部件很好地显示 pandas 数据框呢?最后我想在 main_box
这是一个代码示例,它适用于任何 jupyter notebook
import pandas as pd
import ipywidgets as widgets
def button_run_on_click(_):
status_label.value = "running...."
df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]])
status_label.value = ""
result_box = setup_ui(df)
main_box.children = [selection, button_run, status_label, result_box]
def setup_ui(df):
return widgets.VBox([df])
selection_box = widgets.Box()
selection_toggles = []
selected_labels = {}
default_labels = ['test1', "test2"]
labels = {"test1": "test1", "test2": "test2", "test3": "test3"}
def update_selection(change):
owner = change['owner']
name = owner.description
if change['new']:
owner.icon = 'check'
selected_labels[name] = labels[name]
else:
owner.icon = ""
selected_labels.pop(name)
for k in sorted(labels):
o = widgets.ToggleButton(description=k)
o.observe(update_selection, 'value')
o.value = k in default_labels
selection_toggles.append(o)
selection_box.children = selection_toggles
status_label = widgets.Label()
status_label.layout.width = '300px'
button_run = widgets.Button(description="Run")
main_box = widgets.VBox([selection_box, button_run, status_label])
button_run.on_click(button_run_on_click)
display(main_box)
from IPython.display import display
import ipywidgets as widgets
def setup_ui(df):
out = widgets.Output()
with out:
display(df)
return out
如果您将 setup_ui
函数更改为此,您可以 return 带有数据框的输出小部件。
但是,在您的 button_run_on_click
函数中,selection
未定义。这应该是其他东西吗?