<?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 ArcPy: Find Maximum Value for each group. in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/arcpy-find-maximum-value-for-each-group/m-p/756840#M58381</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I'm new to python and and arcpy and would like to get some advice in generating a python script. I have a table with the following fields:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Field 01:&amp;nbsp; Quinary (txt)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Field 02:&amp;nbsp; Water Management Area (txt)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Field 03:&amp;nbsp; Percentage (Double)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The table represents the results based on the intersection of the quinary (polygon) feature class that was intersected with the Water Management Area (polygon) feature class. The Percentage Field represents the percentage area of the original Quinary Feature Class that falls within the Water Management Area. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The table has multiple records where Field 01 can have the same value, Field 02 can have the same value but Field 03 will be different. I need to identify the records based on Field 01 and Field 02 and identify the maximum value in Field 03.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;ID&amp;nbsp; Field 01&amp;nbsp;&amp;nbsp;&amp;nbsp; Field 02&amp;nbsp;&amp;nbsp;&amp;nbsp; Field 03&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;01&amp;nbsp; Q1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; W1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 02.00&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;02&amp;nbsp; Q1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; W1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 48.00&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;03&amp;nbsp; Q1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; W2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 50.00&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;04&amp;nbsp; Q2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; W3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 90.00&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;05&amp;nbsp; Q2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; W4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10.00&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Results Reqiured:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;ID&amp;nbsp; Field 01&amp;nbsp;&amp;nbsp;&amp;nbsp; Field 02&amp;nbsp;&amp;nbsp;&amp;nbsp; Field 03&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;03&amp;nbsp; Q1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; W2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 50.00&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;04&amp;nbsp; Q2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; W3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 90.00&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Any help will be appreciated.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 25 Mar 2014 21:53:14 GMT</pubDate>
    <dc:creator>PeterWilson</dc:creator>
    <dc:date>2014-03-25T21:53:14Z</dc:date>
    <item>
      <title>ArcPy: Find Maximum Value for each group.</title>
      <link>https://community.esri.com/t5/python-questions/arcpy-find-maximum-value-for-each-group/m-p/756840#M58381</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I'm new to python and and arcpy and would like to get some advice in generating a python script. I have a table with the following fields:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Field 01:&amp;nbsp; Quinary (txt)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Field 02:&amp;nbsp; Water Management Area (txt)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Field 03:&amp;nbsp; Percentage (Double)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The table represents the results based on the intersection of the quinary (polygon) feature class that was intersected with the Water Management Area (polygon) feature class. The Percentage Field represents the percentage area of the original Quinary Feature Class that falls within the Water Management Area. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The table has multiple records where Field 01 can have the same value, Field 02 can have the same value but Field 03 will be different. I need to identify the records based on Field 01 and Field 02 and identify the maximum value in Field 03.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;ID&amp;nbsp; Field 01&amp;nbsp;&amp;nbsp;&amp;nbsp; Field 02&amp;nbsp;&amp;nbsp;&amp;nbsp; Field 03&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;01&amp;nbsp; Q1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; W1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 02.00&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;02&amp;nbsp; Q1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; W1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 48.00&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;03&amp;nbsp; Q1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; W2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 50.00&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;04&amp;nbsp; Q2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; W3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 90.00&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;05&amp;nbsp; Q2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; W4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10.00&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Results Reqiured:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;ID&amp;nbsp; Field 01&amp;nbsp;&amp;nbsp;&amp;nbsp; Field 02&amp;nbsp;&amp;nbsp;&amp;nbsp; Field 03&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;03&amp;nbsp; Q1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; W2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 50.00&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;04&amp;nbsp; Q2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; W3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 90.00&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Any help will be appreciated.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 25 Mar 2014 21:53:14 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/arcpy-find-maximum-value-for-each-group/m-p/756840#M58381</guid>
      <dc:creator>PeterWilson</dc:creator>
      <dc:date>2014-03-25T21:53:14Z</dc:date>
    </item>
    <item>
      <title>Re: ArcPy: Find Maximum Value for each group.</title>
      <link>https://community.esri.com/t5/python-questions/arcpy-find-maximum-value-for-each-group/m-p/756841#M58382</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi Peter,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Looking at the desired result, you could use something like this:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;import arcpy

# your data:
tbl = r'C:\Project\_Forums\_maxDict\fgdb\test.gdb\aTable'
fld_quin = 'Quinary'
fld_wma = 'WMA' # Water Management Area
fld_perc = 'Percentage'
fld_oid = arcpy.Describe(tbl).OIDfieldname # or specify ID fieldname

# create empty dictionary to store results
dct = {}

# loop through table
flds = (fld_oid, fld_quin, fld_wma, fld_perc)
with arcpy.da.SearchCursor(tbl, flds) as curs:
&amp;nbsp;&amp;nbsp;&amp;nbsp; for row in curs:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oid, perc = row[0], row[3]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; quin, wma = row[1], row[2]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if quin in dct:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; max_perc = dct[quin][2]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if perc &amp;gt; max_perc:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dct[quin] = (oid, wma, perc)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dct[quin] = (oid, wma, perc)

# print results
for quin, val in dct.items():
&amp;nbsp;&amp;nbsp;&amp;nbsp; print val[0], quin, val[1], val[2]&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This produces the following output:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family:courier new;"&gt;3 Q1 W2 50.0&lt;BR /&gt;4 Q2 W3 90.0&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The dictionary holds the Quinary as key value and a tuple of OID, WMA and Percentage as value. In this case the maximum percentage is stored per Quinary. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;In case you are interested in determining the maximum percentage per combination of Quinary and Water Management Area, the code would slightly change:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;import arcpy

# your data:
tbl = r'C:\Project\_Forums\_maxDict\fgdb\test.gdb\aTable'
fld_quin = 'Quinary'
fld_wma = 'WMA' # Water Management Area
fld_perc = 'Percentage'
fld_oid = arcpy.Describe(tbl).OIDfieldname

# create empty dictionary to store results
dct = {}

# loop through table
flds = (fld_oid, fld_quin, fld_wma, fld_perc)
with arcpy.da.SearchCursor(tbl, flds) as curs:
&amp;nbsp;&amp;nbsp;&amp;nbsp; for row in curs:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oid, perc = row[0], row[3]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; quin, wma = row[1], row[2]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; key = (quin, wma)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if key in dct:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; max_perc = dct[key][1]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if perc &amp;gt; max_perc:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dct[key] = (oid, perc)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dct[key] = (oid, perc)

# print results
for key, val in dct.items():
&amp;nbsp;&amp;nbsp;&amp;nbsp; print val[0], key[0], key[1], val[1]&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Kind regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Xander&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 08:05:49 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/arcpy-find-maximum-value-for-each-group/m-p/756841#M58382</guid>
      <dc:creator>XanderBakker</dc:creator>
      <dc:date>2021-12-12T08:05:49Z</dc:date>
    </item>
    <item>
      <title>Re: ArcPy: Find Maximum Value for each group.</title>
      <link>https://community.esri.com/t5/python-questions/arcpy-find-maximum-value-for-each-group/m-p/756842#M58383</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Alternative to ESRI stack is to use Pandas library for this kind of stuff.&amp;nbsp; Here I just pulled in your sample data into the Default.gdb as a table, but it could also be a feature class too -- doesn't really matter.&amp;nbsp; Or it could be just about any data source (.txt, .csv, cx_Oracle cursor, etc...)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Here's a GIS-centric solution using Pandas.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Source data sampdata.csv:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;ID,Field01,Field02,Field03&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;01,Q1,W1,02.00&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;02,Q1,W1,48.00&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;03,Q1,W2,50.00&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;04,Q2,W3,90.00&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;05,Q2,W4,10.00&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;

import pandas as pd
import numpy as np

#just pull in sample data into a gbd table
_dfsource = r'H:\Documents\ArcGIS\Default.gdb\sampdat'

#specify fields to use and convert the gdb tab to a numpy array
flds = ['ID', 'Field01', 'Field02', 'Field03']
_numparr = arcpy.da.TableToNumPyArray(_dfsource, flds)

#convert the numpy array to a pandas data frame for easy-peezy grouping functions
_dfarr = pd.DataFrame(_numparr, columns=['ID', 'Field01', 'Field02', 'Field03'])
_dfarrGrouped = _dfarr.groupby(['Field01'])['Field03'].max().reset_index()

print _dfarrGrouped

&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Result:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; Field01&amp;nbsp; Field03&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Q1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 50&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Q2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 90&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 08:05:52 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/arcpy-find-maximum-value-for-each-group/m-p/756842#M58383</guid>
      <dc:creator>JamesCrandall</dc:creator>
      <dc:date>2021-12-12T08:05:52Z</dc:date>
    </item>
    <item>
      <title>Re: ArcPy: Find Maximum Value for each group.</title>
      <link>https://community.esri.com/t5/python-questions/arcpy-find-maximum-value-for-each-group/m-p/756843#M58384</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi Xander&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The following is exactly what I'm trying to achieve. I've not worked with python dictionaries yet. Would you mind explaining to me how to convert the python dictionary into a File Geodatabase Table?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for all your help so far, its much appreciated.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 26 Mar 2014 20:35:57 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/arcpy-find-maximum-value-for-each-group/m-p/756843#M58384</guid>
      <dc:creator>PeterWilson</dc:creator>
      <dc:date>2014-03-26T20:35:57Z</dc:date>
    </item>
    <item>
      <title>Re: ArcPy: Find Maximum Value for each group.</title>
      <link>https://community.esri.com/t5/python-questions/arcpy-find-maximum-value-for-each-group/m-p/756844#M58385</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;Hi Xander&lt;BR /&gt;&lt;BR /&gt;The following is exactly what I'm trying to achieve. I've not worked with python dictionaries yet. Would you mind explaining to me how to convert the python dictionary into a File Geodatabase Table?&lt;BR /&gt;&lt;BR /&gt;Thanks for all your help so far, its much appreciated.&lt;BR /&gt;&lt;BR /&gt;Regards&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi Peter,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It is nice to see that James Crandall has joined this thread with some &lt;/SPAN&gt;&lt;SPAN style="font-style:italic;"&gt;panda&lt;/SPAN&gt;&lt;SPAN&gt; and &lt;/SPAN&gt;&lt;SPAN style="font-style:italic;"&gt;numpy&lt;/SPAN&gt;&lt;SPAN&gt; magic. On previous occasions James has pointed out the strength of these modules. Since &lt;/SPAN&gt;&lt;SPAN style="font-style:italic;"&gt;panda&lt;/SPAN&gt;&lt;SPAN&gt; is not available by default on a ArcGIS system and &lt;/SPAN&gt;&lt;SPAN style="font-style:italic;"&gt;numpy&lt;/SPAN&gt;&lt;SPAN&gt; is, I will try to show you how you could write the dictionary to a table, by using &lt;/SPAN&gt;&lt;SPAN style="font-style:italic;"&gt;numpy&lt;/SPAN&gt;&lt;SPAN&gt;.&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If you want to use the arpy way of creating an empty table, adding field and using an insert cursor to fill the table, you can look at the thread below, where an example is shown:&lt;/SPAN&gt;&lt;BR /&gt;&lt;A href="http://forums.arcgis.com/threads/105303-Take-identical-fields-and-concatenate-additional-field?p=375982&amp;amp;viewfull=1#post375982" rel="nofollow noopener noreferrer" target="_blank"&gt;http://forums.arcgis.com/threads/105303-Take-identical-fields-and-concatenate-additional-field?p=375982&amp;amp;viewfull=1#post375982&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Here the code to use numpy to store the table:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;import arcpy, os, numpy
arcpy.env.overwriteOutput = True

# your data:
tbl = r'C:\Project\_Forums\_maxDict\fgdb\test.gdb\aTable'
fld_quin = 'Quinary'
fld_wma = 'WMA' # Water Management Area
fld_perc = 'Percentage'
fld_oid = arcpy.Describe(tbl).OIDfieldname # or specify ID fieldname

# extra vars for output
fld_id = 'ID'
out_ws = r'C:\Project\_Forums\_maxDict\fgdb\test.gdb'
tbl_name = 'aNewOutputTable'

# create empty dictionary to store results
dct = {}

# loop through table
flds = (fld_oid, fld_quin, fld_wma, fld_perc)
with arcpy.da.SearchCursor(tbl, flds) as curs:
&amp;nbsp;&amp;nbsp;&amp;nbsp; for row in curs:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oid, perc = row[0], row[3]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; quin, wma = row[1], row[2]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if quin in dct:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; max_perc = dct[quin][2]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if perc &amp;gt; max_perc:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dct[quin] = (oid, wma, perc)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dct[quin] = (oid, wma, perc)

# create list for use in numpy
lst_out = [(val[0], quin, val[1], val[2]) for quin, val in dct.items()]

# create a numpy array
npa = numpy.array(lst_out, numpy.dtype([(fld_id, numpy.int32), (fld_quin, '|S8'), (fld_wma, '|S8'), (fld_perc, numpy.float)]))

# output list of fields
flds = (fld_id, fld_quin, fld_wma, fld_perc)

# store the table
arcpy.da.NumPyArrayToTable(npa, os.path.join(out_ws, tbl_name), flds)&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Kind regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Xander&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 08:05:54 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/arcpy-find-maximum-value-for-each-group/m-p/756844#M58385</guid>
      <dc:creator>XanderBakker</dc:creator>
      <dc:date>2021-12-12T08:05:54Z</dc:date>
    </item>
  </channel>
</rss>

