code: def test_group_by_function(self):
      table = Table(self.rows, self.column_names, self.column_types)
  
      tableset = table.group_by(
          lambda r: r["three"] < 5, key_type=Boolean()
      )
  
      self.assertIsInstance(tableset, TableSet)
      self.assertEqual(len(tableset), 2)
      self.assertEqual(tableset.key_name, "group")
  
      self.assertIn(True, tableset.keys())
      self.assertIn(False, tableset.keys())
  
      self.assertSequenceEqual(
          tableset[True].columns["one"], ("a", "a", "b")
      )
      self.assertSequenceEqual(tableset[False].columns["one"], (None,))
  
file_path: agate/tests/test_table/test_group_by.py
imports: from decimal import Decimal
  from agate import Table, TableSet
  from agate.data_types import Boolean, Number, Text
  from agate.testcase import AgateTestCase
label_desc: Use image node_id 6 for calling the TestGroupBy obj's underlying member method code with example usage: obj.test_group_by_function() without return types