Fix for column data is a list or tuple in pc.data_table (#576)

This commit is contained in:
Xiaojing Chen 2023-03-05 07:41:44 +08:00 committed by GitHub
parent 35ed2839fd
commit a1f3bc7130
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 2 deletions

View File

@ -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()

View File

@ -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(