code: def compare_frames(expected, actual):
      assert actual.shape == expected.shape
      assert (
          actual.columns == expected.columns
      ), "Columns differ: %r vs %r" % (actual.columns, colnames)
      for i in range(len(actual.columns)):
          colname = actual.columns[i]
          t1 = expected.types[colname]
          t2 = actual.types[colname]
          assert t1 == t2, "Bad types %s: expected %s, got %s" % (
              colname,
              t1,
              t2,
          )
          col1 = expected[colname]
          s1 = str(h2o.as_list(col1))
          col2 = actual[colname]
          s2 = str(h2o.as_list(col2))
          assert (
              s1 == s2
          ), "bad values: expected[%d] = %r, actual[%d] = %r" % (
              i,
              s1,
              i,
              s2,
          )
  
imports: from builtins import zip
  import sys
  import h2o
  from tests import pyunit_utils
  from h2o import H2OFrame
  from h2o.exceptions import H2OTypeError, H2OValueError
label_desc: Use image node_id 1 for calling a global function with example usage: compare_frames(expected, actual) without return types