def reindex_columns_partial(df, cols):
    """
    Reorder a DataFrame so that the given columns come first.

    :param df: The DataFrame to reorder
    :param cols: The columns which should come first, in order.
    :return df: The reindex DataFrame
    """
    cols = list(cols)

    ordering = cols[:]
    for c in df.columns:
        if c in cols:
            cols.remove(c)
        else:
            ordering.append(c)

    if cols:
        raise KeyError("Unable to find keys: {}".format(",".join(cols)))

    return df.reindex(columns=ordering)