def create_source_map(source, on, source_keys, comparison_func):
    """
    Splits a source into groups using a comparison function.
    
    :param pandas.DataFrame source: Source list.
    :param str on: `source[on]` is used as an operand in `comparison_func`.
    :param list source_keys: Secondary operand in `comparison_func`.
    :param function comparison_func: Function to compare `source[on]` to 
        `source_keys`. Must return a boolean mask the same length as `source`.
    :return: Map of source_keys to subsets of the source that satisfy the 
        `comparison_func`
    :rtype: dict
    """
    source_map = {}
    for key in source_keys:
        select = comparison_func(source[on], key)
        source_map[key] = source[select]
    return source_map
