code: def _fill_data(self, json):
      self._data = OrderedDict()
      for c in json["columns"]:
          c.pop("__meta")  # Redundant description ColV3
          c.pop("domain_cardinality")  # Same as len(c['domain'])
          sdata = c.pop("string_data")
          if sdata:
              c[
                  "data"
              ] = sdata  # Only use data field; may contain either [str] or [real]
          # Data (not string) columns should not have a string in them.  However,
          # our NaNs are encoded as string literals "NaN" as opposed to the bare
          # token NaN, so the default python json decoder does not convert them
          # to math.nan.  Do that now.
          else:
              if c["data"] and (
                  len(c["data"]) > 0
              ):  # orc file parse can return frame with zero rows
                  c["data"] = [
                      float("nan") if x == "NaN" else x
                      for x in c["data"]
                  ]
          if c["data"]:
              self._data[c.pop("label")] = c  # Label used as the Key
      return self
  
imports: from h2o.utils.compatibility import *
  from collections import OrderedDict
  import copy
  import gc
  import inspect
  import math
  import time
  import numbers
  import tabulate
  import h2o
  from h2o.backend.connection import H2OConnectionError
  from h2o.utils.shared_utils import _is_fr, _py_tmp_key
  from h2o.model.model_base import ModelBase
  from h2o.expr_optimizer import optimize
label_desc: Use image node_id 21 for calling the H2OCache obj's underlying member method code with example usage: obj._fill_data(json) and returns: self