<?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 Rank features by an attribute within groups of another attribute in ArcGIS Pro Questions</title>
    <link>https://community.esri.com/t5/arcgis-pro-questions/rank-features-by-an-attribute-within-groups-of/m-p/1057754#M40901</link>
    <description>&lt;P&gt;Using the below code in ArcGIS Pro Calculate Field, I was able to rank my data overall by score (descending - so high score gets a rank of 1) after permanently sorting my layer, but I would also like to rank scores within groups of 1 or 2 other fields for example within Watershed and within Watershed and County. Is there a way to add this to the code in Calculate Field?&lt;/P&gt;&lt;P&gt;Rank=getNextRank(!Score!)&lt;/P&gt;&lt;P&gt;Code Block&lt;/P&gt;&lt;P&gt;rank = 0&lt;BR /&gt;lastValue = None&lt;/P&gt;&lt;P&gt;def getNextRank(value):&lt;BR /&gt;global rank&lt;BR /&gt;global lastValue&lt;BR /&gt;if value == lastValue:&lt;BR /&gt;return rank&lt;BR /&gt;else:&lt;BR /&gt;rank+=1&lt;BR /&gt;lastValue = value&lt;BR /&gt;return rank&lt;/P&gt;&lt;P&gt;For example&lt;/P&gt;&lt;TABLE width="644"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD width="64"&gt;Score&lt;/TD&gt;&lt;TD width="89"&gt;Watershed&lt;/TD&gt;&lt;TD width="64"&gt;County&lt;/TD&gt;&lt;TD width="90"&gt;Overall Rank&lt;/TD&gt;&lt;TD width="147"&gt;Rank_win_Watershed&lt;/TD&gt;&lt;TD width="190"&gt;Rank_win_WatershedCounty&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;30&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;70&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;40&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;30&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;60&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;55&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Many thanks!&lt;/P&gt;</description>
    <pubDate>Thu, 13 May 2021 18:53:13 GMT</pubDate>
    <dc:creator>LJackson29</dc:creator>
    <dc:date>2021-05-13T18:53:13Z</dc:date>
    <item>
      <title>Rank features by an attribute within groups of another attribute</title>
      <link>https://community.esri.com/t5/arcgis-pro-questions/rank-features-by-an-attribute-within-groups-of/m-p/1057754#M40901</link>
      <description>&lt;P&gt;Using the below code in ArcGIS Pro Calculate Field, I was able to rank my data overall by score (descending - so high score gets a rank of 1) after permanently sorting my layer, but I would also like to rank scores within groups of 1 or 2 other fields for example within Watershed and within Watershed and County. Is there a way to add this to the code in Calculate Field?&lt;/P&gt;&lt;P&gt;Rank=getNextRank(!Score!)&lt;/P&gt;&lt;P&gt;Code Block&lt;/P&gt;&lt;P&gt;rank = 0&lt;BR /&gt;lastValue = None&lt;/P&gt;&lt;P&gt;def getNextRank(value):&lt;BR /&gt;global rank&lt;BR /&gt;global lastValue&lt;BR /&gt;if value == lastValue:&lt;BR /&gt;return rank&lt;BR /&gt;else:&lt;BR /&gt;rank+=1&lt;BR /&gt;lastValue = value&lt;BR /&gt;return rank&lt;/P&gt;&lt;P&gt;For example&lt;/P&gt;&lt;TABLE width="644"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD width="64"&gt;Score&lt;/TD&gt;&lt;TD width="89"&gt;Watershed&lt;/TD&gt;&lt;TD width="64"&gt;County&lt;/TD&gt;&lt;TD width="90"&gt;Overall Rank&lt;/TD&gt;&lt;TD width="147"&gt;Rank_win_Watershed&lt;/TD&gt;&lt;TD width="190"&gt;Rank_win_WatershedCounty&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;30&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;70&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;40&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;30&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;60&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;55&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Many thanks!&lt;/P&gt;</description>
      <pubDate>Thu, 13 May 2021 18:53:13 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-pro-questions/rank-features-by-an-attribute-within-groups-of/m-p/1057754#M40901</guid>
      <dc:creator>LJackson29</dc:creator>
      <dc:date>2021-05-13T18:53:13Z</dc:date>
    </item>
    <item>
      <title>Re: Rank features by an attribute within groups of another attribute</title>
      <link>https://community.esri.com/t5/arcgis-pro-questions/rank-features-by-an-attribute-within-groups-of/m-p/1057915#M40920</link>
      <description>&lt;P&gt;It is much easier with multi-group ranking to use cursors rather than Field Calculator.&amp;nbsp; Something like this in the interactive Python window should work:&lt;/P&gt;&lt;LI-CODE lang="python"&gt;lyr = # name of layer or path to feature class or table

sql = "ORDER BY watershed, county, score desc"
flds = ["watershed", "county", "Rank_win_WatershedCounty"]
with arcpy.da.UpdateCursor(lyr, flds, sql_clause=(None,sql)) as cur:
    cnt = 1
    row = next(cur)
    cur.updateRow(row[0:2] + [cnt])
    row_prev = row
    for row in cur:
        if row[0:2]==row_prev[0:2]:
            cnt += 1
        else:
            cnt = 1
            
        cur.updateRow(row[0:2] + [cnt])
        row_prev = row&lt;/LI-CODE&gt;</description>
      <pubDate>Thu, 13 May 2021 23:02:30 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-pro-questions/rank-features-by-an-attribute-within-groups-of/m-p/1057915#M40920</guid>
      <dc:creator>JoshuaBixby</dc:creator>
      <dc:date>2021-05-13T23:02:30Z</dc:date>
    </item>
  </channel>
</rss>

