code: def _transform_data_container(
      self, data_container: DACT, context: CX
  ) -> Tuple["BaseStep", DACT]:
      transform_results = []
      for i, (ids, data_inputs, expected_outputs) in enumerate(
          data_container
      ):
          transform_result = self[i].handle_transform(
              DACT(
                  ids=ids,
                  data_inputs=data_inputs,
                  expected_outputs=expected_outputs,
              ),
              context,
          )
          transform_results.append(transform_result)
  
      output_data_container = ListDataContainer.empty()
      for data_container_batch in transform_results:
          output_data_container.append_data_container(
              data_container_batch
          )
      return output_data_container
  
imports: import copy
  from operator import itemgetter
  from typing import Callable, List, Optional, Tuple, Union
  from neuraxle.base import CX, DACT, BaseStep, BaseTransformer, ForceHandleMixin, ForceHandleOnlyMixin, Identity, MetaStep, NamedStepsList, TruncableJoblibStepSaver
  from neuraxle.data_container import DIT, EOT, IDT, DACTData, ListDataContainer
  from neuraxle.steps.flow import ExecuteIf
  import numpy
label_desc: Use image node_id 7 for calling the StepClonerForEachDataInput obj's underlying member method code with example usage: obj._transform_data_container(data_container, context) and returns: output_data_container