我使用“ipyaggrid”库。我想将所有价格值转换为带有 2 位小数的浮点格式,并添加前缀 £。请告诉我我做错了什么以及如何解决它,我收到了错误
TypeError: Unserializable object <function currency_renderer at 0x0000026B9F46AB60> of type <class 'function'>
。感谢您的帮助
def currency_renderer(params):
formatted_value = "£{:.2f}".format(float(params.value))
return formatted_value
def create_aggrid(df):
currency_columns = ['size', 'pnl', 'commission']
column_defs = [
{
'headerName': column,
'field': column,
'cellRenderer': currency_renderer if column in currency_columns else None
}
for column in df.columns
]
grid_options = {
'columnDefs' : column_defs,
'defaultColDef': {'sortable': 'true', 'filter': 'true', 'resizable': 'true'},
}
ag_grid = grid.Grid(grid_data=df,
export_mode="buttons",
columns_fit='auto',
grid_options=grid_options,
theme='ag-theme-balham',
keep_multiindex=False,
center=True)
return ag_grid
currency_renderer(params)
不应该是一个JavaScript函数吗?
根据这个例子:
https://gitlab.com/DGothrek/ipyaggrid/-/issues/6
“cellRenderer”函数是这样内嵌定义的
column_defs = [{'headerName':'Test','field':'test', 'cellRenderer':'''function(params){
return (params.value);
}'''},
]
您的案例应该是这样的:
column_defs = [
{
'headerName': column,
'field': column,
'cellRenderer': '''function(params){
return ("£{:.2f}".format(float(params.value)));
}''' if column in currency_columns else None
}
for column in df.columns
]