将排名最高的值传递给列表的函数

Function to pass highest ranked values to a list

Python 的新手,正在寻找构建函数的帮助 - 我已经搜索了其他答案,但没有找到我正在寻找的确切内容(如果这是重复查询,请根据需要重定向) .

我正在使用 Pandas,下面有一个包含两列排名的数据框:

Example DataFrame

我有这个数据帧的 3 个副本,格式相同但值不同。每个包含两个排名列(col1 中的 rank_ctb 和 col2 中的 rank_score)。

我想构建一个函数,我可以在其中传递数据框的名称,并将第 1 列中排名最高的 5 个 ID(索引列)添加到一个列表中,然后第 2 列中的 5 个最高排名,到另一个列表。

所以在这个数据示例中,col 1 已经在排名中排序,列表将包含值:

#5 最高排名 RANK_CTB

List_One = [Test_Data_1, Test_Data_9, Test_Data_19, Test_Data_5, Test_Data_8]

#5 来自 RANK_SCORE 的最高排名(此列未排序,在我的示例数据中看不到第 3 和第 5 名)

List_Two = [Test_Data_8, Test_Data_22, some_other_ID, Test_Data_26, some_other_ID2]

我最初的想法是我需要使用 for 循环并设置两个空列表,但从那里我完全卡住了。

我正在为您编写一个测试函数,我认为这可以完成工作。 根据需要稍微修改一下

def test(df):
    list_one = []
    list_two = []

    col1_highest = sorted(list(df.RANK_CTB), reverse = True)[:5]
    col2_highest = sorted(list(df.RANK_SCORE), reverse = True)[:5]
    
    for i range(len(col1_highest)):
        list_one.append(df.loc[df.RANK_CTB == col1_highest[i], 'ID'])
        list_two.append(df.loc[df.RANK_SCORE == col2_highest[i], 'ID'])
    
    return list_one, list_two

list_one, list_two = 测试(name_of_df)