docstr: Adapter for a dict, which maps different time series kinds to Pandas DataFrames.
  
  :param ts_dict: a dict of data frames
  :type ts_dict: dict[str, pd.DataFrame]
  
  :param column_id: the name of the column containing time series group ids
  :type column_id: str
  
  :param column_value: the name of the column containing time series values
  :type column_value: str
  
  :param column_sort: the name of the column to sort on
  :type column_sort: str|None
code: def __init__(
      self, ts_dict, column_id, column_value, column_sort=None
  ):
      """
      Adapter for a dict, which maps different time series kinds to Pandas DataFrames.
  
      :param ts_dict: a dict of data frames
      :type ts_dict: dict[str, pd.DataFrame]
  
      :param column_id: the name of the column containing time series group ids
      :type column_id: str
  
      :param column_value: the name of the column containing time series values
      :type column_value: str
  
      :param column_sort: the name of the column to sort on
      :type column_sort: str|None
      """
      _check_colname(*list(ts_dict.keys()))
      for df in ts_dict.values():
          _check_nan(df, column_id, column_value)
  
      self.column_value = column_value
  
      if column_sort is not None:
          for key, df in ts_dict.items():
              _check_nan(df, column_sort)
  
          self.grouped_dict = {
              key: df.sort_values([column_sort]).groupby(column_id)
              for key, df in ts_dict.items()
          }
      else:
          self.grouped_dict = {
              key: df.groupby(column_id) for key, df in ts_dict.items()
          }
  
      super().__init__(df, column_id)
  
imports: import itertools
  from collections import defaultdict, namedtuple
  from typing import Iterable, Sized
  import pandas
label_desc: Use image node_id 1 to create a new TsDictAdapter object from inherited base classes: PartitionedTsData with example: obj = TsDictAdapter(ts_dict, column_id, column_value, column_sort)