// convert to list
// needed when creating a mapping through the iteration
if isinstance(by, str):
by = [by]
// this is a temporary measure, till the minimum Pandas version is 1.1,
// which supports null values in the group by
// If any of the grouping columns has null values, we temporarily
// replace the values with some outrageous value, that should not exist