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