基本上,我想做的是使pandas数据框可点击并保存用户所做的点击。

考虑过为此使用小部件。

到目前为止,我有这个:

import pandas as pd
from IPython.display import display, HTML
from ipywidgets import widgets

df = pd.DataFrame([[1,'car'],[2,'bus'],[3,'train']])

click_list = []

display(df[:1])
button = widgets.Button(description='click')
display(button)
def obc(b):
    click_list.append((pd.to_datetime('now'),1))
button.on_click(obc)

button2 = widgets.Button(description='click')
display(button2)
def obc2(b):
    click_list.append((pd.to_datetime('now'),2))
display(df[1:2])
button2.on_click(obc2)

button3 = widgets.Button(description='click')
display(button3)
def obc3(b):
    click_list.append((pd.to_datetime('now'),3))
display(df[2:3])
button3.on_click(obc3)

给出以下内容:

python - 使用jupyter小部件保存对 Pandas 数据框的点击-LMLPHP

它具有我所追求的基本功能,但是以一种令人困惑的方式显示(特别是如果我们谈论的是数十行),我想要这样的东西:

python - 使用jupyter小部件保存对 Pandas 数据框的点击-LMLPHP

或类似的东西,任何帮助都将是非常有用的

最佳答案

看来VBoxing html显示效果不错(请注意,IPython.display.HTML和ipywidgets.HTML是不一样的)

import pandas as pd
from IPython.display import display, HTML
from ipywidgets import Button, HBox, VBox,widgets
import ipywidgets


df = pd.DataFrame([[1,'car'],[2,'bus'],[3,'train']])

click_list = []

button = widgets.Button(description='click')
def obc(b):
    click_list.append((pd.to_datetime('now'),1))
button.on_click(obc)

button2 = widgets.Button(description='click')
def obc2(b):
    click_list.append((pd.to_datetime('now'),2))
button2.on_click(obc2)

button3 = widgets.Button(description='click')
def obc3(b):
    click_list.append((pd.to_datetime('now'),3))
button3.on_click(obc3)

display(HBox([VBox([widgets.Button(description=''),button,button2,button3]),ipywidgets.
                    HTML(df.style.set_table_attributes('class="table"').render())]))

python - 使用jupyter小部件保存对 Pandas 数据框的点击-LMLPHP

关于python - 使用jupyter小部件保存对 Pandas 数据框的点击,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43832898/

10-16 03:12