【发布时间】:2014-01-08 01:39:38
【问题描述】:
我很惊讶我在 python 中找不到任何关于排名数字的信息...
基本上,我需要两个脚本来执行相同的任务,一个按升序排列,一个按降序排列。
row[2] 是要排名的数字,row[4] 是要放入排名的单元格。
row[0] + row[1] 定义了每个数据集/组
在第一个示例中,数字越大,排名越高。
CSV 示例 1(排名下降)
uniquedata1,uniquecell1,42,data,1,data
uniquedata1,uniquecell1,32,data,2,data
uniquedata1,uniquecell1,13,data,3,data
uniquedata2,uniquecell2,41,data,2,data
uniquedata2,uniquecell2,39,data,3,data
uniquedata2,uniquecell2,45,data,1,data
uniquedata2,uniquecell2,22,data,4,data
uniquedata1,uniquecell2,36,data,3,data
uniquedata1,uniquecell2,66,data,1,data
uniquedata1,uniquecell2,40,data,2,data
在第二个示例中,较大的数字具有较低的排名。
CSV 示例 2(排名上升)
uniquedata1,uniquecell1,42,data,3,data
uniquedata1,uniquecell1,32,data,2,data
uniquedata1,uniquecell1,13,data,1,data
uniquedata2,uniquecell2,41,data,3,data
uniquedata2,uniquecell2,39,data,2,data
uniquedata2,uniquecell2,45,data,4,data
uniquedata2,uniquecell2,22,data,1,data
uniquedata1,uniquecell2,36,data,1,data
uniquedata1,uniquecell2,66,data,3,data
uniquedata1,uniquecell2,40,data,2,data
在第三个例子中,它包含了应该被赋予最高等级的空单元格(如果有两个空白,它们应该被赋予相同的等级)
CSV 示例 3(包括空单元格)
uniquedata1,uniquecell1,42,data,2,data
uniquedata1,uniquecell1,,data,3,data
uniquedata1,uniquecell1,13,data,1,data
uniquedata2,uniquecell2,41,data,3,data
uniquedata2,uniquecell2,,data,3,data
uniquedata2,uniquecell2,,data,3,data
uniquedata2,uniquecell2,22,data,1,data
uniquedata1,uniquecell2,36,data,1,data
uniquedata1,uniquecell2,66,data,3,data
uniquedata1,uniquecell2,40,data,2,data
有人知道我怎样才能达到预期的效果吗?
【问题讨论】:
-
sort csv by column 的可能重复项
-
您需要想出具有相似含义的替代词并搜索它们 - 例如。
sort而不是排名。 -
@MrE 问题是我不确定如何进行分组部分,我也不知道如何为空格设置例外。
-
如果您使用排序这个词而不是排名,您会发现大量信息,包括Python sorting howto。对数字进行排序是微不足道的,包括反向排序。空格排序 (
None) 将None放在任何数字之前,因此正常排序顺序已经完全满足您的要求。您尚未展示任何您自己解决此问题的努力。 -
我不明白你的例子。您说第一个排名靠后,而 row[2] 有要排名的数字。如果这是真的,列表中的数据行是否不会按它们的第三列排序(或者可能按它们在行 [4] 中的假定排名)?我还想知道,如果你自己的声望分数甚至没有那么高,你将如何奖励 +50 分。
标签: python sorting python-2.7 pandas ranking