Iterator for subtables defined by a splits string

    Parameters
    ----------
    patch : obj
        Patch object containing data to subset
    splits : str
        Specifies how a column of a dataset should be split. See Notes.

    Yields
    ------
    tuple
        First element is subset string, second is subtable dataframe

    Notes
    -----
    {0}

def _yield_subpatches(patch, splits, name='split'):
    """
    Iterator for subtables defined by a splits string

    Parameters
    ----------
    patch : obj
        Patch object containing data to subset
    splits : str
        Specifies how a column of a dataset should be split. See Notes.

    Yields
    ------
    tuple
        First element is subset string, second is subtable dataframe

    Notes
    -----
    {0}

    """

    if splits:
        subset_list = _parse_splits(patch, splits)
        for subset in subset_list:
            logging.info('Analyzing subset %s: %s' % (name, subset))
            subpatch = copy.copy(patch)
            subpatch.table = _subset_table(patch.table, subset)
            subpatch.meta, subpatch.incremented = _subset_meta(patch.meta,
                                                subset, incremented=True)

            yield subset, subpatch
    else:
        yield '', patch