2017-05-07 19 views
2

基本的には、パンダのデータフレームをクリック可能にして、ユーザがクリックしたものを保存することです。jupyterウィジェットを使用してパンダデータフレームのクリックを節約する

ウィジェットの使用についての考え。

これまでのところ、私はこれがあります。これを与える

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) 

enter image description here

それは私が後だ基本的な機能を持っていますが、それは混乱の方法で表示されます(特に何十行も話している場合)私はこのようなものを持っています:

enter image description here

または類似した、任意のヘルプははるかになりますVBoxing HTMLディスプレイはいい仕事をしていませんようだ

+0

どのように表示されますか?実際に 'df'の"変更 "を実装していないのですか?データフレームウィジェットを含む完全に新しいウィジェットを作成する方が簡単だと思います。 – MSeifert

+0

3行は単なる例であるため、ボタンはデータフレームの側面に配置する必要があります。結合されたオブジェクトのアイデアは素晴らしいですが、どうですか? –

+0

それはどのように見えるかによって異なります。 「希望の」ウィジェット表示のイメージを作成できますか(フリーハンドも問題ありません)? – MSeifert

答えて

0

をにappriciated(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())])) 

enter image description here

0

これを自動化する方法はありますか?だから、それは不明確な量のチェックボックス/行で使うことができますか?次のコードはエラーです。AttributeError: 'list'オブジェクトに '_handle_displayed'属性がありません。

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

df = pd.DataFrame(data=[['a',1],['b',32]], columns=['J1','J2']) 

mydict = {} 
t=0 
for ts in df.J1: 
    mydict[str('c')+ str(t)] = widgets.Checkbox(value=False, description = 'Accepted') 
    t=t+1 

    display(HBox([VBox([widgets.Checkbox(description=''),mydict.values()]),ipywidgets. 
        HTML(df.style.set_table_attributes('class="table"').render())])) 
関連する問題