@classmethod
def export_single_profile(cls, clusters, cf_fpath, irp=0, fpath_out=None,
    key=None, forecast_fpath=None):
    """Get a single representative profile timeseries dataframe.

        Parameters
        ----------
        clusters : pd.DataFrame
            Single DataFrame with (gid, gen_gid, cluster_id, rank).
        cf_fpath : str
            reV generation output file.
        irp : int
            Rank of profile to get. Zero is the most representative profile.
        fpath_out : str
            Optional filepath to export files to.
        key : str | None
            Rank column to sort by to get the best ranked profile.
            None will use implicit logic to select the rank key.
        forecast_fpath : str
            reV generation output file for forecast data. If this is input,
            profiles will be taken from forecast fpath instead of fpath gen
            based on a NN mapping.
        """
    rp = cls(clusters, cf_fpath, key=key, forecast_fpath=forecast_fpath)
    cols = clusters.cluster_id.unique()
    if rp.key == 'rank_included_trg':
        for itrg, df in rp.clusters.groupby('trg'):
            if fpath_out is not None:
                fpath_out_trg = fpath_out.replace('.csv', '_trg{}.csv'.
                    format(itrg))
            rp._get_rep_profile(df, cf_fpath, irp=irp, fpath_out=
                fpath_out_trg, key=rp.key, forecast_fpath=rp.
                _forecast_fpath, cols=cols)
    else:
        rp._get_rep_profile(rp.clusters, cf_fpath, irp=irp, fpath_out=
            fpath_out, key=rp.key, forecast_fpath=rp._forecast_fpath, cols=cols
            )
