Skip to content

Instantly share code, notes, and snippets.

@chapmanjacobd
Last active August 13, 2023 00:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chapmanjacobd/37d61693add62adb66b085e4e095aba1 to your computer and use it in GitHub Desktop.
Save chapmanjacobd/37d61693add62adb66b085e4e095aba1 to your computer and use it in GitHub Desktop.
def rank_dataframe(df, ascending_cols=None):
if ascending_cols is None:
ascending_cols = []
numeric_cols = df.select_dtypes(include=["number"]).columns
ranks = df[numeric_cols].apply(
lambda x: x.rank(
method="min", na_option="bottom", ascending=x.name in ascending_cols
)
)
scaled_ranks = (ranks - 1) / (len(ranks.columns) - 1)
scaled_df = df.iloc[scaled_ranks.sum(axis=1).sort_values().index]
return scaled_df.reset_index(drop=True)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment