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, [])
Merges all child dataframes. Only works for dataframes stored on disk - not in memory.