def _run_apply(df, func, args=None, pandas_kwds=None):
    """Run DataFrame.apply().

    Parameters
    ----------
    df : DataFrame
        Any pandas DataFrame
    args : tuple
        A tuple of arguments to submit to the function
    pandas_kwds : dict
        A dictionary of keyword arguments to pass to DataFrame.apply()

    Returns
    -------
    DataFrame
        The result of apply()
    """
    apply_kwds = {'args': args} if args else {}
    if pandas_kwds:
        apply_kwds.update(pandas_kwds)
    return df.apply(func, **apply_kwds)
