<?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: Field Calculator Expression Question (RePost) in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/field-calculator-expression-question-repost/m-p/346802#M27194</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you Xander,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have had to take a break from this to do other work,&amp;nbsp; I certainly appreciate your help. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Howard&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 04 Feb 2016 15:25:18 GMT</pubDate>
    <dc:creator>HOWARDWILLIAMS</dc:creator>
    <dc:date>2016-02-04T15:25:18Z</dc:date>
    <item>
      <title>Field Calculator Expression Question (RePost)</title>
      <link>https://community.esri.com/t5/python-questions/field-calculator-expression-question-repost/m-p/346797#M27189</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you to all who responded to this question earlier.&amp;nbsp; I am re-posting a more specific question and hopefully my code will be easier to understand.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So, I have number of feature classes in a .gdb that have tree counts per acre in each polygon by year.&amp;nbsp; I am iteratively unioning the features by year adding a field that is the sum of the previous tree count with the new tree count.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;import arcpy
arcpy.CheckOutExtension("spatial")
arcpy.env.overwriteOutput=True
arcpy.env.workspace="C:\LPP\APS.gdb"
R1="R1ADS"
Dam="Damage"
years=['1999','2000', '2001', '2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013']
fields=['TPA_','Acres_','NoTrees_']
###R1+years(i)+Dam is the name of the feature in the .gdb that will be unioned
RangeYear=['1999_2000','1999_2001','1999_2002','1999_2003','1999_2004','1999_2005',
'1999_2006','1999_2007','1999_2008','1999_2009','1999_2010','1999_2011','1999_2012','1999_2013']
### RangeYear is a variable that I created for naming the unioned outfeature
#________________________________________________

###The statement below create first RangeYear feature to base iteration on in following loop.&amp;nbsp; Because only two years are being added it requires a simple Field Calculator Expression to sum the trees per acre per year which I was able to figure out.
arcpy.Union_analysis([R1+years[0]+Dam,R1+years[1]+Dam],R1+years[0]+"_"+years[1]+Dam)
for j in range(0,3):
&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.AddField_management(R1+years[0]+"_"+years[1]+Dam,fields&lt;J&gt;+RangeYear[0],"FLOAT","","","")&lt;/J&gt;

###I tried to but the statements below in the loop above by having the Field Calculator expressions in a list also, however
###the program would not allow me to iterate through that list so I plugged the expression into the parameters below and ran the tool one at a ###time.
arcpy.CalculateField_management(R1+years[0]+"_"+years[1]+Dam,fields[0]+RangeYear[0],'!TPA_1999!+!TPA_2000!',"PYTHON")
arcpy.CalculateField_management(R1+years[0]+'_'+years[1]+Dam,fields[0]+RangeYear[0],'!Shape_Area! * 0.00024710538',"PYTHON")
arcpy.CalculateField_management(R1+years[0]+'_'+years[1]+Dam,fields[0]+RangeYear[0],'!TPA_1999_2000!*!Acres_1999_2000!',"PYTHON")

###The loop below unions the remaining years the previous years with the next chronological year;
###adds three new field; calculates the new fields values and then move on to the next union.
for i in range(0,13) :
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.Union_analysis([R1+years[0]+"_"+years[i+1]+Dam,R1+years[i+2]+Dam],R1+years[0]+"_"+years[i+2]+Dam)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for j in range(0,3):
&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;&amp;nbsp;&amp;nbsp; arcpy.AddField_management(R1+years[0]+'_'+years[i+2]+Dam,fields&lt;J&gt;+RangeYear[i+1],"FLOAT","","","")&lt;/J&gt;
&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;&amp;nbsp;&amp;nbsp; arcpy.CalculateField_management(R1+years[0]+'_'+years[i+2]+Dam,fields&lt;J&gt;, ????Expression????, "PYTHON")&lt;/J&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
###OK so the major crux here is that for TPA_1999_20XX, I need to add the previously unioned TPA_1999_20XX-1 to TPA_20XX.
###I have no idea how to do this.&amp;nbsp; I suspect that once I figure this out, the next two expressions will be evident.
####################################Thanks for reading, sorry for being such a hack programmer!####################&lt;/PRE&gt;&lt;P&gt;&lt;A href="https://community.esri.com/thread/171432" target="_blank"&gt;Field Calculator Expression Arcpy&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Message was edited by: HOWARD WILLIAMS&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 16:20:22 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/field-calculator-expression-question-repost/m-p/346797#M27189</guid>
      <dc:creator>HOWARDWILLIAMS</dc:creator>
      <dc:date>2021-12-11T16:20:22Z</dc:date>
    </item>
    <item>
      <title>Re: Field Calculator Expression Question (RePost)</title>
      <link>https://community.esri.com/t5/python-questions/field-calculator-expression-question-repost/m-p/346798#M27190</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Ahhggg!&amp;nbsp; For some reason when I hit post the indentations get all messed up!&amp;nbsp; I have no idea why it is doing this, please see if you can decifer what I am trying to do here.&amp;nbsp; Again I am sorry for this, I will attach the .txt file that has the code looking nice. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 Jan 2016 17:08:59 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/field-calculator-expression-question-repost/m-p/346798#M27190</guid>
      <dc:creator>HOWARDWILLIAMS</dc:creator>
      <dc:date>2016-01-28T17:08:59Z</dc:date>
    </item>
    <item>
      <title>Re: Field Calculator Expression Question (RePost)</title>
      <link>https://community.esri.com/t5/python-questions/field-calculator-expression-question-repost/m-p/346799#M27191</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Howard,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Check out this thread about posting code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A __default_attr="1070" __jive_macro_name="blogpost" class="jive_macro jive_macro_blogpost" data-renderedposition="94.5_8_34_16" href="https://community.esri.com/"&gt;&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 Jan 2016 17:40:21 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/field-calculator-expression-question-repost/m-p/346799#M27191</guid>
      <dc:creator>JakeSkinner</dc:creator>
      <dc:date>2016-01-28T17:40:21Z</dc:date>
    </item>
    <item>
      <title>Re: Field Calculator Expression Question (RePost)</title>
      <link>https://community.esri.com/t5/python-questions/field-calculator-expression-question-repost/m-p/346800#M27192</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;And you seem to have not seen this post &lt;A href="https://community.esri.com/migration-blogpost/55181"&gt;Code Formatting... the basics++&lt;/A&gt; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 Jan 2016 18:38:56 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/field-calculator-expression-question-repost/m-p/346800#M27192</guid>
      <dc:creator>DanPatterson_Retired</dc:creator>
      <dc:date>2016-01-28T18:38:56Z</dc:date>
    </item>
    <item>
      <title>Re: Field Calculator Expression Question (RePost)</title>
      <link>https://community.esri.com/t5/python-questions/field-calculator-expression-question-repost/m-p/346801#M27193</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;OK, let's post a small part of the code that only produces messages to see if I understand what you are trying to do:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;def main():
##&amp;nbsp;&amp;nbsp;&amp;nbsp; import arcpy
##&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.env.overwriteOutput=True
##&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.env.workspace= r"C:\LPP\APS.gdb"

&amp;nbsp;&amp;nbsp;&amp;nbsp; fields = ['TPA_','Acres_','NoTrees_']
&amp;nbsp;&amp;nbsp;&amp;nbsp; expr = "'!TPA_{0}! + !TPA_{1}!','!Shape_Area! * 0.00024710538','!TPA_{2}! * !Acres_{2}!'"
&amp;nbsp;&amp;nbsp;&amp;nbsp; years = [str(year) for year in range(1999, 2014)]
&amp;nbsp;&amp;nbsp;&amp;nbsp; range_years = ['{0}_{1}'.format(years[0], year) for year in years[1:]]

&amp;nbsp;&amp;nbsp;&amp;nbsp; # initial union
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "initial union"
&amp;nbsp;&amp;nbsp;&amp;nbsp; lst_union = ["R1ADS{0}Damage".format(y) for y in years[:2]]
&amp;nbsp;&amp;nbsp;&amp;nbsp; fc_out = "R1ADS{0}Damage".format(range_years[0])
&amp;nbsp;&amp;nbsp;&amp;nbsp; print lst_union
&amp;nbsp;&amp;nbsp;&amp;nbsp; print fc_out
&amp;nbsp;&amp;nbsp;&amp;nbsp; prev_union = fc_out

&amp;nbsp;&amp;nbsp;&amp;nbsp; # arcpy.Union_analysis(lst_union, fc_out)
&amp;nbsp;&amp;nbsp;&amp;nbsp; expr2 = expr.format(years[0], years[1], range_years[0])
&amp;nbsp;&amp;nbsp;&amp;nbsp; expressions = expr2.split(',')
&amp;nbsp;&amp;nbsp;&amp;nbsp; for j in range(0,3):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fld = fields&lt;J&gt;+range_years[0]&lt;/J&gt;
##&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.AddField_management(fc_out, fields&lt;J&gt;+range_years[0], "FLOAT")&lt;/J&gt;
##&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.CalculateField_management(fc_out, fields&lt;J&gt;+range_years[0], expressions&lt;J&gt;, "PYTHON")&lt;/J&gt;&lt;/J&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print " - AddField", fld
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print " - CalcField", fld, expressions&lt;J&gt;&lt;/J&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp; # other unions
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "\nother unions"
&amp;nbsp;&amp;nbsp;&amp;nbsp; for y in years[2:]:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; index = years.index(y)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lst_union = ["R1ADS{0}Damage".format(years[index-1]), "R1ADS{0}Damage".format(y)]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lst_union = [prev_union, "R1ADS{0}Damage".format(y)]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fc_out = "R1ADS{0}Damage".format(range_years[index-1])
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prev_union = fc_out
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print lst_union
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print fc_out
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; expr2 = expr.format(years[index-1], y, range_years[index-1])
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; expr3 = expr.format(range_years[index-2], y, range_years[index-1])
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; expressions = expr2.split(',')
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; expressions2 = expr3.split(',')

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # arcpy.Union_analysis(lst_union, fc_out)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for j in range(0,3):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fld = fields&lt;J&gt;+range_years[index-1]&lt;/J&gt;
##&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.AddField_management(fc_out, fld, "FLOAT")
##&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.CalculateField_management(fc_out, fields&lt;J&gt;, expressions&lt;J&gt;, "PYTHON")&lt;/J&gt;&lt;/J&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print " - AddField", fld
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print " - CalcField", fld, expressions&lt;J&gt;&lt;/J&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if j == 0:
&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; print "&amp;nbsp; or - CalcField", fld, expressions2&lt;J&gt;&lt;/J&gt;

if __name__ == '__main__':
&amp;nbsp;&amp;nbsp;&amp;nbsp; main()&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This yields the following output text:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;initial union
['R1ADS1999Damage', 'R1ADS2000Damage']
R1ADS1999_2000Damage
 - AddField TPA_1999_2000
 - CalcField TPA_1999_2000 '!TPA_1999! + !TPA_2000!'
 - AddField Acres_1999_2000
 - CalcField Acres_1999_2000 '!Shape_Area! * 0.00024710538'
 - AddField NoTrees_1999_2000
 - CalcField NoTrees_1999_2000 '!TPA_1999_2000! * !Acres_1999_2000!'

other unions
['R1ADS1999_2000Damage', 'R1ADS2001Damage']
R1ADS1999_2001Damage
 - AddField TPA_1999_2001
 - CalcField TPA_1999_2001 '!TPA_2000! + !TPA_2001!'
&amp;nbsp; or - CalcField TPA_1999_2001 '!TPA_1999_2000! + !TPA_2001!'
 - AddField Acres_1999_2001
 - CalcField Acres_1999_2001 '!Shape_Area! * 0.00024710538'
 - AddField NoTrees_1999_2001
 - CalcField NoTrees_1999_2001 '!TPA_1999_2001! * !Acres_1999_2001!'
['R1ADS1999_2001Damage', 'R1ADS2002Damage']
R1ADS1999_2002Damage
 - AddField TPA_1999_2002
 - CalcField TPA_1999_2002 '!TPA_2001! + !TPA_2002!'
&amp;nbsp; or - CalcField TPA_1999_2002 '!TPA_1999_2001! + !TPA_2002!'
 - AddField Acres_1999_2002
 - CalcField Acres_1999_2002 '!Shape_Area! * 0.00024710538'
 - AddField NoTrees_1999_2002
 - CalcField NoTrees_1999_2002 '!TPA_1999_2002! * !Acres_1999_2002!'
['R1ADS1999_2002Damage', 'R1ADS2003Damage']
R1ADS1999_2003Damage
 - AddField TPA_1999_2003
 - CalcField TPA_1999_2003 '!TPA_2002! + !TPA_2003!'
&amp;nbsp; or - CalcField TPA_1999_2003 '!TPA_1999_2002! + !TPA_2003!'
 - AddField Acres_1999_2003
 - CalcField Acres_1999_2003 '!Shape_Area! * 0.00024710538'
 - AddField NoTrees_1999_2003
 - CalcField NoTrees_1999_2003 '!TPA_1999_2003! * !Acres_1999_2003!'
['R1ADS1999_2003Damage', 'R1ADS2004Damage']
R1ADS1999_2004Damage
 - AddField TPA_1999_2004
 - CalcField TPA_1999_2004 '!TPA_2003! + !TPA_2004!'
&amp;nbsp; or - CalcField TPA_1999_2004 '!TPA_1999_2003! + !TPA_2004!'
 - AddField Acres_1999_2004
 - CalcField Acres_1999_2004 '!Shape_Area! * 0.00024710538'
 - AddField NoTrees_1999_2004
 - CalcField NoTrees_1999_2004 '!TPA_1999_2004! * !Acres_1999_2004!'
['R1ADS1999_2004Damage', 'R1ADS2005Damage']
R1ADS1999_2005Damage
 - AddField TPA_1999_2005
 - CalcField TPA_1999_2005 '!TPA_2004! + !TPA_2005!'
&amp;nbsp; or - CalcField TPA_1999_2005 '!TPA_1999_2004! + !TPA_2005!'
 - AddField Acres_1999_2005
 - CalcField Acres_1999_2005 '!Shape_Area! * 0.00024710538'
 - AddField NoTrees_1999_2005
 - CalcField NoTrees_1999_2005 '!TPA_1999_2005! * !Acres_1999_2005!'
['R1ADS1999_2005Damage', 'R1ADS2006Damage']
R1ADS1999_2006Damage
 - AddField TPA_1999_2006
 - CalcField TPA_1999_2006 '!TPA_2005! + !TPA_2006!'
&amp;nbsp; or - CalcField TPA_1999_2006 '!TPA_1999_2005! + !TPA_2006!'
 - AddField Acres_1999_2006
 - CalcField Acres_1999_2006 '!Shape_Area! * 0.00024710538'
 - AddField NoTrees_1999_2006
 - CalcField NoTrees_1999_2006 '!TPA_1999_2006! * !Acres_1999_2006!'
['R1ADS1999_2006Damage', 'R1ADS2007Damage']
R1ADS1999_2007Damage
 - AddField TPA_1999_2007
 - CalcField TPA_1999_2007 '!TPA_2006! + !TPA_2007!'
&amp;nbsp; or - CalcField TPA_1999_2007 '!TPA_1999_2006! + !TPA_2007!'
 - AddField Acres_1999_2007
 - CalcField Acres_1999_2007 '!Shape_Area! * 0.00024710538'
 - AddField NoTrees_1999_2007
 - CalcField NoTrees_1999_2007 '!TPA_1999_2007! * !Acres_1999_2007!'
['R1ADS1999_2007Damage', 'R1ADS2008Damage']
R1ADS1999_2008Damage
 - AddField TPA_1999_2008
 - CalcField TPA_1999_2008 '!TPA_2007! + !TPA_2008!'
&amp;nbsp; or - CalcField TPA_1999_2008 '!TPA_1999_2007! + !TPA_2008!'
 - AddField Acres_1999_2008
 - CalcField Acres_1999_2008 '!Shape_Area! * 0.00024710538'
 - AddField NoTrees_1999_2008
 - CalcField NoTrees_1999_2008 '!TPA_1999_2008! * !Acres_1999_2008!'
['R1ADS1999_2008Damage', 'R1ADS2009Damage']
R1ADS1999_2009Damage
 - AddField TPA_1999_2009
 - CalcField TPA_1999_2009 '!TPA_2008! + !TPA_2009!'
&amp;nbsp; or - CalcField TPA_1999_2009 '!TPA_1999_2008! + !TPA_2009!'
 - AddField Acres_1999_2009
 - CalcField Acres_1999_2009 '!Shape_Area! * 0.00024710538'
 - AddField NoTrees_1999_2009
 - CalcField NoTrees_1999_2009 '!TPA_1999_2009! * !Acres_1999_2009!'
['R1ADS1999_2009Damage', 'R1ADS2010Damage']
R1ADS1999_2010Damage
 - AddField TPA_1999_2010
 - CalcField TPA_1999_2010 '!TPA_2009! + !TPA_2010!'
&amp;nbsp; or - CalcField TPA_1999_2010 '!TPA_1999_2009! + !TPA_2010!'
 - AddField Acres_1999_2010
 - CalcField Acres_1999_2010 '!Shape_Area! * 0.00024710538'
 - AddField NoTrees_1999_2010
 - CalcField NoTrees_1999_2010 '!TPA_1999_2010! * !Acres_1999_2010!'
['R1ADS1999_2010Damage', 'R1ADS2011Damage']
R1ADS1999_2011Damage
 - AddField TPA_1999_2011
 - CalcField TPA_1999_2011 '!TPA_2010! + !TPA_2011!'
&amp;nbsp; or - CalcField TPA_1999_2011 '!TPA_1999_2010! + !TPA_2011!'
 - AddField Acres_1999_2011
 - CalcField Acres_1999_2011 '!Shape_Area! * 0.00024710538'
 - AddField NoTrees_1999_2011
 - CalcField NoTrees_1999_2011 '!TPA_1999_2011! * !Acres_1999_2011!'
['R1ADS1999_2011Damage', 'R1ADS2012Damage']
R1ADS1999_2012Damage
 - AddField TPA_1999_2012
 - CalcField TPA_1999_2012 '!TPA_2011! + !TPA_2012!'
&amp;nbsp; or - CalcField TPA_1999_2012 '!TPA_1999_2011! + !TPA_2012!'
 - AddField Acres_1999_2012
 - CalcField Acres_1999_2012 '!Shape_Area! * 0.00024710538'
 - AddField NoTrees_1999_2012
 - CalcField NoTrees_1999_2012 '!TPA_1999_2012! * !Acres_1999_2012!'
['R1ADS1999_2012Damage', 'R1ADS2013Damage']
R1ADS1999_2013Damage
 - AddField TPA_1999_2013
 - CalcField TPA_1999_2013 '!TPA_2012! + !TPA_2013!'
&amp;nbsp; or - CalcField TPA_1999_2013 '!TPA_1999_2012! + !TPA_2013!'
 - AddField Acres_1999_2013
 - CalcField Acres_1999_2013 '!Shape_Area! * 0.00024710538'
 - AddField NoTrees_1999_2013
 - CalcField NoTrees_1999_2013 '!TPA_1999_2013! * !Acres_1999_2013!'&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Is this what you are trying to do? Please have a good look at the union list and the calculation of the field TPA_ for the other unions.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 16:20:25 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/field-calculator-expression-question-repost/m-p/346801#M27193</guid>
      <dc:creator>XanderBakker</dc:creator>
      <dc:date>2021-12-11T16:20:25Z</dc:date>
    </item>
    <item>
      <title>Re: Field Calculator Expression Question (RePost)</title>
      <link>https://community.esri.com/t5/python-questions/field-calculator-expression-question-repost/m-p/346802#M27194</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you Xander,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have had to take a break from this to do other work,&amp;nbsp; I certainly appreciate your help. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Howard&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 04 Feb 2016 15:25:18 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/field-calculator-expression-question-repost/m-p/346802#M27194</guid>
      <dc:creator>HOWARDWILLIAMS</dc:creator>
      <dc:date>2016-02-04T15:25:18Z</dc:date>
    </item>
    <item>
      <title>Re: Field Calculator Expression Question (RePost)</title>
      <link>https://community.esri.com/t5/python-questions/field-calculator-expression-question-repost/m-p/346803#M27195</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Xander,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can you please explain what is going on with this line of code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Line 09&amp;nbsp;&amp;nbsp;&amp;nbsp; range_years = [&lt;SPAN class="string"&gt;'{0}_{1}'.format(years[&lt;SPAN class="number"&gt;0&lt;/SPAN&gt;], year) &lt;SPAN class="keyword"&gt;for&lt;/SPAN&gt; year &lt;SPAN class="keyword"&gt;in&lt;/SPAN&gt; years[&lt;SPAN class="number"&gt;1&lt;/SPAN&gt;:]]&amp;nbsp; &lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="string"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="string"&gt;The results do provide what I need however I do not understand how this code works.&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="string"&gt;If you have time to explain it I would appreciate it.&amp;nbsp; Please do not trouble yourself though.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="string"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="string"&gt;Thanks &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="string"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="string"&gt;Howard &lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 04 Feb 2016 16:16:30 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/field-calculator-expression-question-repost/m-p/346803#M27195</guid>
      <dc:creator>HOWARDWILLIAMS</dc:creator>
      <dc:date>2016-02-04T16:16:30Z</dc:date>
    </item>
    <item>
      <title>Re: Field Calculator Expression Question (RePost)</title>
      <link>https://community.esri.com/t5/python-questions/field-calculator-expression-question-repost/m-p/346804#M27196</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi &lt;A href="https://community.esri.com/migrated-users/17044"&gt;HOWARD WILLIAMS&lt;/A&gt; ,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The line you refer to is using "List comprehensions". To learn more about them I recommend &lt;A href="https://community.esri.com/migration-blogpost/55473"&gt;List comprehensions...&lt;/A&gt; posted by &lt;A href="https://community.esri.com/migrated-users/3116"&gt;Dan Patterson&lt;/A&gt;​.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In short, let's start a line before:&lt;/P&gt;&lt;PRE __default_attr="python" __jive_macro_name="code" class="jive_macro_code jive_text_macro _jivemacro_uid_14546124735601231" data-renderedposition="120_8_912_16" jivemacro_uid="_14546124735601231"&gt;&lt;P&gt;years = [str(year) for year in range(1999, 2014)]&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This will generate a list called "years" with the following content:&lt;/P&gt;&lt;PRE __default_attr="python" __jive_macro_name="code" class="jive_macro_code jive_text_macro _jivemacro_uid_14546124787177287" data-renderedposition="178_8_912_16" jivemacro_uid="_14546124787177287"&gt;&lt;P&gt;['1999', '2000', '2001', '2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013']&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This list "years" is used in the List comprehension:&lt;/P&gt;&lt;PRE __default_attr="python" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_1454612484326222 jive_text_macro" data-renderedposition="236_8_912_16" jivemacro_uid="_1454612484326222"&gt;&lt;P&gt;range_years = ['{0}_{1}'.format(years[0], year) for year in years[1:]]&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The result of this line is a list called "range_years" with this content:&lt;/P&gt;&lt;PRE __default_attr="python" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_14546124921324942 jive_text_macro" data-renderedposition="294_8_912_32" jivemacro_uid="_14546124921324942"&gt;&lt;P&gt;['1999_2000', '1999_2001', '1999_2002', '1999_2003', '1999_2004', '1999_2005', '1999_2006', '1999_2007', '1999_2008', '1999_2009', '1999_2010', '1999_2011', '1999_2012', '1999_2013']&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;Let's take the line apart. We don't use the entire list of year but start at index 1 (the second element of the list) &lt;/P&gt;&lt;PRE __default_attr="python" __jive_macro_name="code" class="_jivemacro_uid_14546125825377372 jive_macro_code jive_text_macro" data-renderedposition="347_8_912_16" jivemacro_uid="_14546125825377372"&gt;&lt;P&gt;print years[1:]&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;... returns:&lt;/P&gt;&lt;PRE __default_attr="python" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_14546125884229883 jive_text_macro" data-renderedposition="405_8_912_16" jivemacro_uid="_14546125884229883"&gt;&lt;P&gt;['2000', '2001', '2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013']&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For each year in this part of the list (2000 until 2013) we use a string and a format command.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Example:&lt;/P&gt;&lt;PRE __default_attr="python" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_14546127797604640 jive_text_macro" data-renderedposition="505_8_912_16" jivemacro_uid="_14546127797604640"&gt;&lt;P&gt;print '{0}_{1}'.format('hello', 'there')&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Will return:&lt;/P&gt;&lt;PRE __default_attr="python" __jive_macro_name="code" class="jive_macro_code jive_text_macro _jivemacro_uid_14546127843384480" data-renderedposition="563_8_912_16" jivemacro_uid="_14546127843384480"&gt;&lt;P&gt;hello_there&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So we have a string &lt;EM&gt;'{0}_{1}'&lt;STRONG&gt;​ &lt;/STRONG&gt;&lt;/EM&gt;and the string has a method called '&lt;EM&gt;format&lt;/EM&gt;' that allows us to pass two parameters 'hello' and 'there' and it will be formatted to 'hello_there'. {0} will be replaced by the first parameter and {1} by the second.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is also done with the parameters years[0] and year. The first (years[0]) takes the first element of the list years (in this case '1999') and the second is the one that changes in the loop (varies from '2000' to '2013'). This creates the list of the year ranges we need in the process.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 04 Feb 2016 19:09:11 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/field-calculator-expression-question-repost/m-p/346804#M27196</guid>
      <dc:creator>XanderBakker</dc:creator>
      <dc:date>2016-02-04T19:09:11Z</dc:date>
    </item>
    <item>
      <title>Re: Field Calculator Expression Question (RePost)</title>
      <link>https://community.esri.com/t5/python-questions/field-calculator-expression-question-repost/m-p/346805#M27197</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Xander,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks so much I have already learned a ton from you!&amp;nbsp; What a help you have been!&amp;nbsp; I have almost got it but am getting an error message saying "The value type is incompatible with the field type.&amp;nbsp; [TPA_1999_2000]" here is the code:&amp;nbsp; Any idea why?@Xandar Bakker&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;for i in range (0,15) :
&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.CalculateField_management(R1+years&lt;I&gt;+Dam,fields[0]+years&lt;I&gt;,"!TPA1!+ !TPA2!+ !TPA3!","PYTHON")&lt;/I&gt;&lt;/I&gt;
##########Calculate Acres_Year
for i in range (0,15) :
&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.CalculateField_management(R1+years&lt;I&gt;+Dam,fields[1]+years&lt;I&gt;,"!shape.area@acres!","PYTHON_9.3")&lt;/I&gt;&lt;/I&gt;
##########Calculate NoTrees_Year
for i in range (0,15) :
&amp;nbsp;&amp;nbsp;&amp;nbsp; expression="!"+fields[0]+years&lt;I&gt;+"!"+"*"+"!"+fields[1]+years&lt;I&gt;+"!"&lt;/I&gt;&lt;/I&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.CalculateField_management(R1+years&lt;I&gt;+Dam,fields[2]+years&lt;I&gt;,expression,"PYTHON")&lt;/I&gt;&lt;/I&gt;

#______________________________________________________________________________________________________________#
#Step 7.&amp;nbsp; Union former year to year following starting with 1999.&amp;nbsp; Add new fields.&amp;nbsp; Calcuate fields
# I was unable to figure out how to do this the following step in a loop so the code is being applied to each year.


RangeYear = ['{0}_{1}'.format(years[0], year) for year in years[1:]]

####1999-2000
exp="'!TPA_{0}! + !TPA_{1}!','!shape.area@acres!','!TPA_{2}! * !Acres_{2}!'"

for i in range (0,1):
&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.Union_analysis([R1+years&lt;I&gt;+Dam, R1+years[i+1]+Dam],R1+RangeYear&lt;I&gt;+Dam)&lt;/I&gt;&lt;/I&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; exp2= exp.format(years&lt;I&gt;,years[i+1],RangeYears&lt;I&gt;,RangeYears&lt;I&gt;)&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; expression=exp2.split(',')
&amp;nbsp;&amp;nbsp;&amp;nbsp; for j in range(0,3):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.AddField_management(R1+RangeYears&lt;I&gt;+Dam,fields&lt;J&gt;+RangeYear&lt;I&gt;,"FLOAT")&lt;/I&gt;&lt;/J&gt;&lt;/I&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print fields&lt;J&gt;+RangeYear&lt;I&gt;&lt;/I&gt;&lt;/J&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print expression&lt;J&gt;&lt;/J&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.CalculateField_management(R1+RangeYears&lt;I&gt;+Dam,fields&lt;J&gt;+RangeYear&lt;I&gt;,expression&lt;J&gt;,"PYTHON")&lt;/J&gt;&lt;/I&gt;&lt;/J&gt;&lt;/I&gt;
&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 16:20:28 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/field-calculator-expression-question-repost/m-p/346805#M27197</guid>
      <dc:creator>HOWARDWILLIAMS</dc:creator>
      <dc:date>2021-12-11T16:20:28Z</dc:date>
    </item>
    <item>
      <title>Re: Field Calculator Expression Question (RePost)</title>
      <link>https://community.esri.com/t5/python-questions/field-calculator-expression-question-repost/m-p/346806#M27198</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Xander,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I think I figured it out when I call expression&lt;J&gt;,&amp;nbsp; it places the expression inside double quotation marks.&amp;nbsp; However if I write the expression in without the double quotation marks it works.&lt;/J&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;exp="'!TPA_{0}!+!TPA_{1}!','!shape.area@acres!','!TPA_{2}! * !Acres_{2}!'"
exp2= exp.format(years[0],years[1],RangeYear[0],RangeYear[0])
expression=exp2.split(',')
arcpy.CalculateField_management(R1+RangeYear[0]+Dam,fields[0]+RangeYear[0],expression[0],"PYTHON")&amp;nbsp; #Does not work
arcpy.CalculateField_management(R1+RangeYear[0]+Dam,fields[0]+RangeYear[0],'!TPA_1999!+!TPA_2000!',"PYTHON") #Does work
&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 16:20:31 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/field-calculator-expression-question-repost/m-p/346806#M27198</guid>
      <dc:creator>HOWARDWILLIAMS</dc:creator>
      <dc:date>2021-12-11T16:20:31Z</dc:date>
    </item>
    <item>
      <title>Re: Field Calculator Expression Question (RePost)</title>
      <link>https://community.esri.com/t5/python-questions/field-calculator-expression-question-repost/m-p/346807#M27199</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;What do you get when you print expression[0]. What is the content of the expression?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In the skeleton that I posted before it generate (I think) a valid syntax for the expression. In see that you are not using all the code that I posted. Maybe you could try the code below or share a part of the data to test if it works and will help to correct any errors.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please try the code below (on a copy of your data to be sure) and post back any errors it generates:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;def main():
&amp;nbsp;&amp;nbsp;&amp;nbsp; import arcpy
&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.env.overwriteOutput=True
&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.env.workspace= r"C:\LPP\APS.gdb"

&amp;nbsp;&amp;nbsp;&amp;nbsp; fields = ['TPA_','Acres_','NoTrees_']
&amp;nbsp;&amp;nbsp;&amp;nbsp; expr = "'!TPA_{0}! + !TPA_{1}!','!Shape_Area! * 0.00024710538','!TPA_{2}! * !Acres_{2}!'"
&amp;nbsp;&amp;nbsp;&amp;nbsp; years = [str(year) for year in range(1999, 2014)]
&amp;nbsp;&amp;nbsp;&amp;nbsp; range_years = ['{0}_{1}'.format(years[0], year) for year in years[1:]]

&amp;nbsp;&amp;nbsp;&amp;nbsp; # initial union
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "initial union"
&amp;nbsp;&amp;nbsp;&amp;nbsp; lst_union = ["R1ADS{0}Damage".format(y) for y in years[:2]]
&amp;nbsp;&amp;nbsp;&amp;nbsp; fc_out = "R1ADS{0}Damage".format(range_years[0])
&amp;nbsp;&amp;nbsp;&amp;nbsp; print lst_union
&amp;nbsp;&amp;nbsp;&amp;nbsp; print fc_out
&amp;nbsp;&amp;nbsp;&amp;nbsp; prev_union = fc_out

&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.Union_analysis(lst_union, fc_out)
&amp;nbsp;&amp;nbsp;&amp;nbsp; expr2 = expr.format(years[0], years[1], range_years[0])
&amp;nbsp;&amp;nbsp;&amp;nbsp; expressions = expr2.split(',')
&amp;nbsp;&amp;nbsp;&amp;nbsp; for j in range(0,3):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fld = fields&lt;J&gt;+range_years[0]&lt;/J&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print " - AddField", fld
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print " - CalcField", fld, expressions&lt;J&gt;&lt;/J&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.AddField_management(fc_out, fields&lt;J&gt;+range_years[0], "FLOAT")&lt;/J&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.CalculateField_management(fc_out, fields&lt;J&gt;+range_years[0], expressions&lt;J&gt;, "PYTHON")&lt;/J&gt;&lt;/J&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp; # other unions
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "\nother unions"
&amp;nbsp;&amp;nbsp;&amp;nbsp; for y in years[2:]:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; index = years.index(y)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lst_union = ["R1ADS{0}Damage".format(years[index-1]), "R1ADS{0}Damage".format(y)]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lst_union = [prev_union, "R1ADS{0}Damage".format(y)]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fc_out = "R1ADS{0}Damage".format(range_years[index-1])
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prev_union = fc_out
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print lst_union
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print fc_out
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; expr3 = expr.format(range_years[index-2], y, range_years[index-1])
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; expressions2 = expr3.split(',')

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.Union_analysis(lst_union, fc_out)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for j in range(0,3):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fld = fields&lt;J&gt;+range_years[index-1]&lt;/J&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print " - AddField", fld
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print " - CalcField", fld, expressions2&lt;J&gt;&lt;/J&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.AddField_management(fc_out, fld, "FLOAT")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.CalculateField_management(fc_out, fields&lt;J&gt;, expressions2&lt;J&gt;, "PYTHON")&lt;/J&gt;&lt;/J&gt;

if __name__ == '__main__':
&amp;nbsp;&amp;nbsp;&amp;nbsp; main()&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 16:20:34 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/field-calculator-expression-question-repost/m-p/346807#M27199</guid>
      <dc:creator>XanderBakker</dc:creator>
      <dc:date>2021-12-11T16:20:34Z</dc:date>
    </item>
  </channel>
</rss>

