Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 函数将排名最高的值传递给列表_Python_Pandas_Ranking - Fatal编程技术网

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

Python 函数将排名最高的值传递给列表,python,pandas,ranking,Python,Pandas,Ranking,我是Python新手,正在寻找一些构建函数的帮助——我已经搜索了其他答案,但还没有找到确切的答案(如果这是重复查询,请根据需要重定向) 我正在与Pandas合作,下面有一个包含两列排名的数据框架: 我有3份此数据帧的副本,格式相同,但值不同。每个包含两个排名列(col1中的排名ctb和col2中的排名分数) 我想构建一个函数,在这个函数中,我可以传递数据帧的名称,它将第1列中5个最高排名的5个ID(索引列)添加到一个列表中,并将第2列中5个最高排名添加到另一个列表中 因此,在本数据示例中,列1

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

我正在与Pandas合作,下面有一个包含两列排名的数据框架:

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

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

因此,在本数据示例中,列1已按排名排序,列表将包含以下值:

#排名第五的排名来自RANK_CTB

列表1=[测试数据1,测试数据9,测试数据19,测试数据5,测试数据8]

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

列表2=[测试数据8,测试数据22,一些其他ID,测试数据26,一些其他ID]


我最初的想法是我需要使用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

列表一、列表二=测试(名称为df)

非常感谢您,这很有效。我不得不重新设置数据帧的索引,因为它没有将“ID”识别为列标题,但一旦我这样做了,它就工作得很好。