【问题标题】:Creating column of rankings without resetting index在不重置索引的情况下创建排名列
【发布时间】:2023-01-30 23:35:58
【问题描述】:

我有一个数据框:

df = pd.DataFrame([['Jim', 93, 87, 66], ['Bob', 88, 90, 65], ['Joe', 72, 100, 70]], columns=['Name', 'Exam_1', 'Exam_2', 'Exam_3'])

我想创建一个数据框,使每个主题根据他们在Exam_1, Exam_2, Exam_3 上的得分获得 3 分的排名。

这是所需的输出:

df_ranked

Name  Exam_1  Exam_2  Exam_3
 Jim       1       3       2
 Bob       2       1       3
 Joe       3       2       1

我相信这可以通过按每一列“升序”对数据框进行排序,重置索引,然后创建索引值列来完成。

是否有可能以另一种方式解决这个问题?

【问题讨论】:

    标签: python pandas indexing


    【解决方案1】:

    您正在寻找 pandas.DataFrame.rank

    df_ranked = df.set_index("Name").rank(ascending=False, method="min").reset_index()
    

    的 输出 :

    print(df_ranked)
    
      Name  Exam_1  Exam_2  Exam_3
    0  Jim     1.0     3.0     2.0
    1  Bob     2.0     2.0     3.0
    2  Joe     3.0     1.0     1.0
    

    【讨论】:

    • 如果数据框中有其他不需要排名的列怎么办?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    • 2012-06-07
    • 1970-01-01
    • 2013-05-21
    • 2013-08-06
    • 1970-01-01
    相关资源
    最近更新 更多