将最高排名值传递到列表的功能

问题描述

Python的新手,正在寻求构建函数的帮助-我搜索了其他答案,但没有找到我想要的东西(如果是重复查询,请根据需要重定向)。

我正在与Pandas合作,下面有一个Dataframe,其中包含两列排名:

Example DataFrame

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

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

因此在此数据示例中,col 1已经在排名上进行了排序,列表将包含以下值:

RANK_CTB的#5最高排名

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

RANK_score中排名第5的最高排名(此列未排序,在我的示例数据中第3和第5排名不可见)

List_Two = [Test_Data_8,Test_Data_22, someotherotherID ,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 = test(name_of_df)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...