Fix for column data is a list or tuple in pc.data_table (#576)
This commit is contained in:
parent
35ed2839fd
commit
a1f3bc7130
@ -94,7 +94,7 @@ class DataTable(Gridjs):
|
||||
# If given a pandas df break up the data and columns
|
||||
if utils.is_dataframe(type(self.data)):
|
||||
self.columns = Var.create(list(self.data.columns.values.tolist())) # type: ignore
|
||||
self.data = Var.create(list(self.data.values.tolist())) # type: ignore
|
||||
self.data = Var.create(utils.format_dataframe_values(self.data)) # type: ignore
|
||||
|
||||
# Render the table.
|
||||
return super()._render()
|
||||
|
@ -1288,6 +1288,28 @@ def is_valid_var_type(var: Type) -> bool:
|
||||
return _issubclass(var, StateVar) or is_dataframe(var) or is_figure(var)
|
||||
|
||||
|
||||
def format_dataframe_values(value: Type) -> List[Any]:
|
||||
"""Format dataframe values.
|
||||
|
||||
Args:
|
||||
value: The value to format.
|
||||
|
||||
Returns:
|
||||
Format data
|
||||
"""
|
||||
if not is_dataframe(type(value)):
|
||||
return value
|
||||
|
||||
format_data = []
|
||||
for data in list(value.values.tolist()):
|
||||
element = []
|
||||
for d in data:
|
||||
element.append(str(d) if isinstance(d, (list, tuple)) else d)
|
||||
format_data.append(element)
|
||||
|
||||
return format_data
|
||||
|
||||
|
||||
def format_state(value: Any) -> Dict:
|
||||
"""Recursively format values in the given state.
|
||||
|
||||
@ -1316,7 +1338,7 @@ def format_state(value: Any) -> Dict:
|
||||
if is_dataframe(type(value)):
|
||||
return {
|
||||
"columns": value.columns.tolist(),
|
||||
"data": value.values.tolist(),
|
||||
"data": format_dataframe_values(value),
|
||||
}
|
||||
|
||||
raise TypeError(
|
||||
|
Loading…
Reference in New Issue
Block a user