code: def unflatten_df(
      df: DataFrame,
      column_shapes: Dict[str, Tuple],
      df_engine: DataFrameEngine,
  ) -> DataFrame:  # noqa: F821
      """Returns an unflattened dataframe, the reverse of flatten_df."""
      for c in df.columns:
          shape = column_shapes.get(c)
          if shape:
              df[c] = df_engine.map_objects(
                  df[c], lambda x: np.array(x).reshape(shape)
              )
      return df
  
file_path: ludwig/ludwig/utils/dataframe_utils.py
imports: from typing import Dict, List, Optional, Tuple
  import numpy
  import pandas
  from ludwig.api_annotations import DeveloperAPI
  from ludwig.constants import DASK_MODULE_NAME
  from ludwig.data.dataframe.base import DataFrameEngine
  from ludwig.utils.types import DataFrame
label_desc: Use image node_id 5 for calling a global function with example usage: unflatten_df(df, column_shapes, df_engine) and returns: df