经常需要用到给dataframe 的某个字段进行排名并按特定规则计算分值。
def calculate_rank_score(df,str_name):
df.sort_values(by=[str_name], inplace=True)
#给字段进行排名
df["%s_rank"%str_name] = df[str_name].rank()
#分值计算规则
rank_score = lambda x: ((x - np.min(x)) / (np.max(x) - np.min(x))) * 40 + 60
#按照规则计算分值
df["final_%s_rank_score"%str_name] = df[["%s"%str_name]].apply(rank_score)
return df