code: def frame_containing_all_missing_values(self, index, columns):
      frame = pd.DataFrame(
          index=index,
          data={c.name: c.missing_value for c in EventDataSet.columns},
      )
      for c in columns:
          # The construction above produces columns of dtype `object` when
          # the missing value is string, but we expect categoricals in the
          # final result.
          if c.dtype == categorical_dtype:
              frame[c.name] = frame[c.name].astype("category")
      return frame
  
imports: from datetime import time
  from itertools import product
  from unittest import skipIf
  import blaze
  import numpy
  import pandas
  import pytz
  from zipline.pipeline import Pipeline, SimplePipelineEngine
  from zipline.pipeline.common import EVENT_DATE_FIELD_NAME, TS_FIELD_NAME, SID_FIELD_NAME
  from zipline.pipeline.data import DataSet, Column
  from zipline.pipeline.domain import US_EQUITIES, EquitySessionDomain
  from zipline.pipeline.loaders.events import EventsLoader
  from zipline.pipeline.loaders.blaze.events import BlazeEventsLoader
  from zipline.pipeline.loaders.utils import next_event_indexer, previous_event_indexer
  from zipline.testing import ZiplineTestCase
  from zipline.testing.fixtures import WithAssetFinder, WithTradingSessions
  from zipline.testing.predicates import assert_equal
  from zipline.utils.numpy_utils import categorical_dtype, datetime64ns_dtype, float64_dtype, int64_dtype
  from zipline.utils.pandas_utils import new_pandas, skip_pipeline_new_pandas
label_desc: Use image node_id 2 for calling the EventsLoaderEmptyTestCase obj's underlying member method code with example usage: obj.frame_containing_all_missing_values(index, columns) and returns: frame