<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Ranking Fields in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/ranking-fields/m-p/278732#M21545</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This worked for me&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;import arcpy &amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;rank = 1&lt;/P&gt;&lt;P&gt;fc = &amp;lt;the feature class you want to rank&amp;gt;&lt;BR /&gt;sqlclause = sql_clause=(None, 'ORDER BY &amp;lt;Ranking Field&amp;gt; DESC')&lt;BR /&gt;with arcpy.da.UpdateCursor(fc,'&amp;lt;the rank field&amp;gt;',sql_clause=sqlclause) as cursor:&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for row in cursor:&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row[1] = rank&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cursor.updateRow(row)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rank = rank + 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;del cursor&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The idea is that I sort the featureclass based on my ranking criteria and then just add 1 to the rank for each loop.&lt;/P&gt;&lt;P&gt;This assumes that you are basing you ranking on a single field.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Instead of DESC which is decending order you could use ASC which is ascending order.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This forum post helped: &lt;A class="link-titled" href="https://gis.stackexchange.com/questions/31171/is-it-possible-to-sort-an-arcpy-da-updatecursor" title="https://gis.stackexchange.com/questions/31171/is-it-possible-to-sort-an-arcpy-da-updatecursor"&gt;arcgis 10.1 - Is it possible to sort an arcpy.da.UpdateCursor()? - Geographic Information Systems Stack Exchange&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 29 Nov 2018 16:52:15 GMT</pubDate>
    <dc:creator>BenjaminSperry1</dc:creator>
    <dc:date>2018-11-29T16:52:15Z</dc:date>
    <item>
      <title>Ranking Fields</title>
      <link>https://community.esri.com/t5/python-questions/ranking-fields/m-p/278727#M21540</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;What I am looking for is giving the FieldA a Rank depending on the values in FieldB. I would like to end up with sth. like this. Can i do this easy in the field calculator?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Rank&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; orig. Value&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 14&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 23&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;in python i did it like this:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;import arcpy, numpy, os&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;from arcpy import env&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;
import arcpy, numpy, os
ShapeName=arcpy.GetParameterAsText(0)
Field=arcpy.GetParameterAsText(1)
RankField=arcpy.GetParameterAsText(2)
rows = arcpy.SearchCursor(ShapeName)
d=[]
for row in rows :
&amp;nbsp;&amp;nbsp;&amp;nbsp; FieldValue=row.getValue(Field)
&amp;nbsp;&amp;nbsp;&amp;nbsp; d.append(FieldValue)
d.sort()
arcpy.AddMessage(d)
del rows
rows2 = arcpy.UpdateCursor(ShapeName,"","",RankField,"")
row2= rows2.next() 
while row2:
&amp;nbsp;&amp;nbsp;&amp;nbsp; x=0
&amp;nbsp;&amp;nbsp;&amp;nbsp; for i in d:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; y=d&lt;X&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if row2.getValue(Field)==y:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rank2=d.index(y)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rank=rank2+1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row2.setValue(RankField, rank) 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rows2.updateRow(row2)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x=x+1
&amp;nbsp;&amp;nbsp;&amp;nbsp; row2 = rows2.next()
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
del rows2&lt;/X&gt;&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for any help&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 09 Jun 2011 02:37:24 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/ranking-fields/m-p/278727#M21540</guid>
      <dc:creator>chriss_</dc:creator>
      <dc:date>2011-06-09T02:37:24Z</dc:date>
    </item>
    <item>
      <title>Re: Ranking Fields</title>
      <link>https://community.esri.com/t5/python-questions/ranking-fields/m-p/278728#M21541</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;put this in the code block&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt; def returnvalue(y):
&amp;nbsp;&amp;nbsp;&amp;nbsp; if&amp;nbsp; y &amp;gt;= 0 and y &amp;lt;= 3:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x = 1
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif&amp;nbsp; y &amp;gt; 3 and y &amp;lt;= 6:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x = 2
&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x = 3
&amp;nbsp;&amp;nbsp;&amp;nbsp; return x&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;and in the = box put &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;returnvalue( !fieldnametocheck! )&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;substitute your values for ranking and return values as you see fit&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 13:34:01 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/ranking-fields/m-p/278728#M21541</guid>
      <dc:creator>TerrySilveus</dc:creator>
      <dc:date>2021-12-11T13:34:01Z</dc:date>
    </item>
    <item>
      <title>Re: Ranking Fields</title>
      <link>https://community.esri.com/t5/python-questions/ranking-fields/m-p/278729#M21542</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi!&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for ur reply!&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;BUT that is not what i am looking for.&amp;nbsp; I speak about several hundred rows. I m looking for some command. Like "rankdata" or sth. like this. I wonder that i didnt find any other entry in the forum. For me it looks odd that this very standard function is not available.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;cu&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Chris&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 09 Jun 2011 14:33:18 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/ranking-fields/m-p/278729#M21542</guid>
      <dc:creator>chriss_</dc:creator>
      <dc:date>2011-06-09T14:33:18Z</dc:date>
    </item>
    <item>
      <title>Re: Ranking Fields</title>
      <link>https://community.esri.com/t5/python-questions/ranking-fields/m-p/278730#M21543</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I'm not 100% sure what exactly it is you are trying to do, but this will fill in a "Rank" field based on another field of values sorted from lowest to highest.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
print "Starting script"
import arcpy
arcpy.env.workspace = r"C:\GIS\Default.gdb"
Field = "&amp;lt;YOUR FIELD&amp;gt;"
currRank = 0
lastRank = 0
lastVal = None
rows = arcpy.UpdateCursor("&amp;lt;YOUR FC&amp;gt;", "", "", "&amp;lt;YOUR FIELD&amp;gt;,RANK", "&amp;lt;YOUR FIELD&amp;gt; A")
print "Starting loop"
for row in rows:
&amp;nbsp;&amp;nbsp;&amp;nbsp; currVal = row.getValue(Field)
&amp;nbsp;&amp;nbsp;&amp;nbsp; if currVal != lastVal:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currRank += 1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row.Rank = currRank
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif currVal == lastVal:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row.Rank = currRank
&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Unexpected occurance"
&amp;nbsp;&amp;nbsp;&amp;nbsp; lastVal = currVal
&amp;nbsp;&amp;nbsp;&amp;nbsp; rows.updateRow(row)
del rows
print "Done"
&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 13:34:04 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/ranking-fields/m-p/278730#M21543</guid>
      <dc:creator>MathewCoyle</dc:creator>
      <dc:date>2021-12-11T13:34:04Z</dc:date>
    </item>
    <item>
      <title>Re: Ranking Fields</title>
      <link>https://community.esri.com/t5/python-questions/ranking-fields/m-p/278731#M21544</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;Hi!&lt;BR /&gt;Thanks for ur reply!&lt;BR /&gt;BUT that is not what i am looking for.&amp;nbsp; I speak about several hundred rows. I m looking for some command. Like "rankdata" or sth. like this. I wonder that i didnt find any other entry in the forum. For me it looks odd that this very standard function is not available.&lt;BR /&gt;cu&lt;BR /&gt;Chris&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I see.&amp;nbsp; Sorry, I misunderstood your question and didn't pay close attention to your code.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 09 Jun 2011 18:58:21 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/ranking-fields/m-p/278731#M21544</guid>
      <dc:creator>TerrySilveus</dc:creator>
      <dc:date>2011-06-09T18:58:21Z</dc:date>
    </item>
    <item>
      <title>Re: Ranking Fields</title>
      <link>https://community.esri.com/t5/python-questions/ranking-fields/m-p/278732#M21545</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This worked for me&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;import arcpy &amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;rank = 1&lt;/P&gt;&lt;P&gt;fc = &amp;lt;the feature class you want to rank&amp;gt;&lt;BR /&gt;sqlclause = sql_clause=(None, 'ORDER BY &amp;lt;Ranking Field&amp;gt; DESC')&lt;BR /&gt;with arcpy.da.UpdateCursor(fc,'&amp;lt;the rank field&amp;gt;',sql_clause=sqlclause) as cursor:&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for row in cursor:&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row[1] = rank&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cursor.updateRow(row)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rank = rank + 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;del cursor&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The idea is that I sort the featureclass based on my ranking criteria and then just add 1 to the rank for each loop.&lt;/P&gt;&lt;P&gt;This assumes that you are basing you ranking on a single field.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Instead of DESC which is decending order you could use ASC which is ascending order.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This forum post helped: &lt;A class="link-titled" href="https://gis.stackexchange.com/questions/31171/is-it-possible-to-sort-an-arcpy-da-updatecursor" title="https://gis.stackexchange.com/questions/31171/is-it-possible-to-sort-an-arcpy-da-updatecursor"&gt;arcgis 10.1 - Is it possible to sort an arcpy.da.UpdateCursor()? - Geographic Information Systems Stack Exchange&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Nov 2018 16:52:15 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/ranking-fields/m-p/278732#M21545</guid>
      <dc:creator>BenjaminSperry1</dc:creator>
      <dc:date>2018-11-29T16:52:15Z</dc:date>
    </item>
    <item>
      <title>Re: Ranking Fields</title>
      <link>https://community.esri.com/t5/python-questions/ranking-fields/m-p/278733#M21546</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The code as written represents an ordinal numbering of the table based on a sorting field, it would only represent a ranking if the sorting field contains no duplicate values.&amp;nbsp; Although the OP's example showed uniqueness in the value field, and the provided code snippet works for that example, it is quite common to have duplicate values in a ranking field.&amp;nbsp; &lt;A href="https://community.esri.com/migrated-users/3104"&gt;Mathew Coyle&lt;/A&gt;‌'s code, although using older/original cursors (that is all that was available at the time), does address ranking more generally.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Nov 2018 19:11:37 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/ranking-fields/m-p/278733#M21546</guid>
      <dc:creator>JoshuaBixby</dc:creator>
      <dc:date>2018-11-29T19:11:37Z</dc:date>
    </item>
    <item>
      <title>Re: Ranking Fields</title>
      <link>https://community.esri.com/t5/python-questions/ranking-fields/m-p/278734#M21547</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I had missed that, thank you very much for pointing it out.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Nov 2018 19:15:36 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/ranking-fields/m-p/278734#M21547</guid>
      <dc:creator>BenjaminSperry1</dc:creator>
      <dc:date>2018-11-29T19:15:36Z</dc:date>
    </item>
  </channel>
</rss>

