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 given a pandas df break up the data and columns
|
||||||
if utils.is_dataframe(type(self.data)):
|
if utils.is_dataframe(type(self.data)):
|
||||||
self.columns = Var.create(list(self.data.columns.values.tolist())) # type: ignore
|
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.
|
# Render the table.
|
||||||
return super()._render()
|
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)
|
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:
|
def format_state(value: Any) -> Dict:
|
||||||
"""Recursively format values in the given state.
|
"""Recursively format values in the given state.
|
||||||
|
|
||||||
@ -1316,7 +1338,7 @@ def format_state(value: Any) -> Dict:
|
|||||||
if is_dataframe(type(value)):
|
if is_dataframe(type(value)):
|
||||||
return {
|
return {
|
||||||
"columns": value.columns.tolist(),
|
"columns": value.columns.tolist(),
|
||||||
"data": value.values.tolist(),
|
"data": format_dataframe_values(value),
|
||||||
}
|
}
|
||||||
|
|
||||||
raise TypeError(
|
raise TypeError(
|
||||||
|
Loading…
Reference in New Issue
Block a user