That's a bit more involved. For groupby you need to build a query using | and for left you need a list of db.table.on(). Have a look at the sample code below for a rough outline of the process.
grouping_fields = [db.table.field1, db.table.field2]
groupby = grouping_fields[0]
if len(grouping_fields) > 1:
for g in grouping_fields[1:]:
groupby = groupby|g
fields = fields + grouping_fields # the grouping fields must be selected
left = [db.table1.on((
db.table1.id == db.table2.table1_id)), db.table1.on((
db.table1.id == db.table3.table1_id))]
rows = db(query).select(*fields, groupby=groupby, left=left)