使用Quantopian qgrid格式化Pandas DataFrame

时间:2015-12-13 15:27:12

标签: python pandas ipython

我试图使用quantopian qgrid在iPython笔记本中打印数据帧。基于示例notebook的简单示例:

import qgrid
qgrid.nbinstall(overwrite=True)
qgrid.set_defaults(remote_js=True, precision=2)

from pandas import Timestamp
from pandas_datareader.data import get_data_yahoo

data = get_data_yahoo(symbols='SPY',
                      start=Timestamp('2014-01-01'),     
                      end=Timestamp('2016-01-01'),
                      adjust_price=True)

qgrid.show_grid(data, grid_options={'forceFitColumns': True})

除精度算法外,如何格式化列数据?似乎有可能传递grid options像formatterFactory或defaultFormatter,但不清楚如何将它们用于天真的用户。

另一种question建议的替代方法,但我喜欢SlickGrid对象提供的交互。

任何帮助或建议非常感谢。

2 个答案:

答案 0 :(得分:1)

简短回答是,大多数网格选项都通过grid_options作为字典传递,例如:

grid_options需要一个字典,例如用于设置特定网格的选项:

qgrid.show_grid(data,
                grid_options={'fullWidthRows': True,
                              'syncColumnCellResize': True,
                              'forceFitColumns': True,
                              'rowHeight': 40,
                              'enableColumnReorder': True,
                              'enableTextSelectionOnCells': True,
                              'editable': True})

请参阅详情here

答案 1 :(得分:0)

我使用df.round更改了浮点格式(使用column_definitions更改格式很有用)。

无论如何,滑块过滤器与列中的值不一致,为什么?

import pandas as pd 
import qgrid
import numpy as np 
col_def = { 'B': {"Slick.Editors.Float.DefaultDecimalPlaces":2}}
np.random.seed(25) 
df = pd.DataFrame(np.random.random([5, 4]), columns =["A", "B", "C", "D"]) 
df = df.round({"A":1, "B":2, "C":3, "D":4}) 
qgrid_widget = qgrid.show_grid(df, show_toolbar=True, column_definitions=col_def)
qgrid_widget

enter image description here