docs: def _data(self, asa=None):
          """
          Merges all child dataframes. Only works for dataframes stored on disk - not in memory.
          """
          hash_list = []
          stack = [self]
          alldfs = True
          store = None
          while stack:
              node = stack.pop()
              if isinstance(node, GroupNode):
                  stack.extend(child for _, child in sorted(node._items(), reverse=True))
              else:
                  if node._target() != TargetType.PANDAS:
                      alldfs = False
                  if node._store is None or node._hashes is None:
                      msg = "Can only merge built dataframes. Build this package and try again."
                      raise NotImplementedError(msg)
                  node_store = node._store
                  if store is None:
                      store = node_store
                  if node_store != store:
                      raise NotImplementedError("Can only merge dataframes from the same store")
                  hash_list += node._hashes
  
          if asa is None:
              if not hash_list:
                  return None
              if not alldfs:
                  raise ValueError("Group contains non-dataframe nodes")
              return store.load_dataframe(hash_list)
          else:
              if hash_list:
                  assert store is not None
                  return asa(self, [store.object_path(obj) for obj in hash_list])
              else:
                  return asa(self, [])