我有一个数据集,我需要对以下内容进行排序和排名:
d0 d1 d2 d3
configuration
theta0 1.0 2.0 2.0 1.0
theta1 3.0 1.0 3.0 3.0
theta2 2.0 3.0 4.0 2.0
theta3 4.0 4.0 1.0 4.0
虽然我的数据集是这样的:
configuration d0 d1 d2 d3
theta0 0.89 0.82 0.87 0.86
theta1 0.73,0.84,0.85,0.78
theta2 0.81,0.79,0.71,0.85
theta3 0.64,0.65,0.99,0.61
对各个列进行排序并赋予其排名的地方
for dataset_name, dataset_values in copy_data.items():
sorted_list = dataset_values.sort_values(ascending=False)
count = 1
print(">>")
print(sorted_list)
for item in sorted_list:
copy_data[dataset_name][copy_data[dataset_name] == item] = count
count += 1
有没有更好的方法来优化它?
答案 0 :(得分:2)
你可以做
df.rank(ascending=False, method='first')
如果多次出现相同值,则将按照列中的顺序排列最高的第一个和第一个条目