In [ ]:
from progressivis.nbwidgets import *
dt = DataTable()
In [ ]:
import numpy as np
import pandas as pd
import json
sz = 100
def df_to_dict(df):
return [list(d.values()) for d in df.to_dict(orient='records')]
ivalues = np.random.randint(100,size=sz)
fvalues = np.random.rand(sz)
df = pd.DataFrame({'ix': range(sz), 'a':ivalues, 'b':fvalues})
In [ ]:
dt.columns = json.dumps(df.columns.tolist())
data = df_to_dict(df.iloc[0:10])
df_len = len(df)
js_data = {'data': data, 'recordsTotal': df_len,
'recordsFiltered': df_len, 'length': len(data)}
dt.data = json.dumps(js_data)
dt
In [ ]:
output2 = widgets.Output()
display(dt, output2)
def on_value_change(change):
info = change['new']
df_len = len(df)
data = df_to_dict(df.iloc[info['start']:info['end']])
js_data = {'data': data, 'recordsTotal': df_len, 'recordsFiltered': df_len,
'length': len(data), 'draw':info['draw'], 'page':info['page']}
dt.data = json.dumps(js_data)
with output2:
print(change['new'])
dt.observe(on_value_change, "page")