def rfm_score(series, ascending=True, n_bins=5): # Rank the values to ensure uniqueness ranked = series.rank(method=’first’, ascending=ascending) # Use pd.qcut on the ranks to assign bins return pd.qcut( ranked, q=n_bins, labels=range(1, n_bins+1) ).astype(int)