def quantileNorm(df):
    """ Quantile normalization across samples
    Parameters
    ----------
    df : pd.DataFrame
        indexed by features and samples are in the column
    Returns
    -------
    pd.DataFrame
        A dataframe that has been quantile normalized
    """
    rank_mean = df.stack().groupby(df.rank(method='first').stack().astype(int)).mean()
    result = df.rank(method='min').stack().astype(int).map(rank_mean).unstack()
    return result