<?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 A Many-to-One DataFrame Merge then Get a Value from Main Table in ArcGIS API for Python Questions</title>
    <link>https://community.esri.com/t5/arcgis-api-for-python-questions/a-many-to-one-dataframe-merge-then-get-a-value/m-p/1270070#M8524</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; I feel what I am attempting to do is pretty straightforward, but I cannot find an example of it.&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;I have a related &lt;STRONG&gt;inspections table&lt;/STRONG&gt; that I am looking to join to the &lt;STRONG&gt;parent table&lt;/STRONG&gt; using a &lt;STRONG&gt;GUID/GLOBALID&lt;/STRONG&gt;. From there I want to get a string value from a field (&lt;STRONG&gt;ID&lt;/STRONG&gt;) from the &lt;STRONG&gt;parent table&lt;/STRONG&gt; record and paste it into any related records in the &lt;STRONG&gt;inspections&lt;/STRONG&gt; table.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;The code I have accomplishes this (&lt;STRONG&gt;partly&lt;/STRONG&gt;) but only for &lt;STRONG&gt;one&lt;/STRONG&gt; related record in the &lt;STRONG&gt;inspections&lt;/STRONG&gt; table. If there are multiple &lt;STRONG&gt;inspections&amp;nbsp;&lt;/STRONG&gt;for that single feature, the remaining related records will have a &lt;STRONG&gt;null valu&lt;/STRONG&gt;e for ID.&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Can someone point me the right direction? Thank you!&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Here is What I Have so Far:&lt;span class="lia-unicode-emoji" title=":kissing_face:"&gt;😗&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;from&lt;/SPAN&gt;&lt;SPAN&gt; arcgis &lt;/SPAN&gt;&lt;SPAN&gt;import&lt;/SPAN&gt;&lt;SPAN&gt; GIS&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;from&lt;/SPAN&gt;&lt;SPAN&gt; arcgis.features &lt;/SPAN&gt;&lt;SPAN&gt;import&lt;/SPAN&gt;&lt;SPAN&gt; FeatureLayer&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;import&lt;/SPAN&gt; &lt;SPAN&gt;pandas&lt;/SPAN&gt; &lt;SPAN&gt;as&lt;/SPAN&gt; &lt;SPAN&gt;pd&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;from&lt;/SPAN&gt; &lt;SPAN&gt;datetime&lt;/SPAN&gt; &lt;SPAN&gt;import&lt;/SPAN&gt; &lt;SPAN&gt;datetime&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;timedelta&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;import&lt;/SPAN&gt; &lt;SPAN&gt;time&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;token&lt;/SPAN&gt;&lt;SPAN&gt; = GIS(&lt;/SPAN&gt;&lt;SPAN&gt;f&lt;/SPAN&gt;&lt;SPAN&gt;''&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;#INSPECTION TABLE -&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;RELATEDTABLE&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;inspections_url =''&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;inspections_lyr&lt;/SPAN&gt;&lt;SPAN&gt; = FeatureLayer(&lt;/SPAN&gt;&lt;SPAN&gt;inspections_url&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;inspections_sdf&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;pd&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;DataFrame&lt;/SPAN&gt;&lt;SPAN&gt;.spatial.from_layer(&lt;/SPAN&gt;&lt;SPAN&gt;inspections_lyr&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;inspections_fset&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;inspections_lyr&lt;/SPAN&gt;&lt;SPAN&gt;.query(&lt;/SPAN&gt;&lt;SPAN&gt;where&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;"ASSETID=null"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;out_fields&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;'PARENT_GLOBALID,ASSETID'&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;inspection_features&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;inspections_fset&lt;/SPAN&gt;&lt;SPAN&gt;.features&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;#get all inspection features&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;workOrder_fset&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;inspections_lyr&lt;/SPAN&gt;&lt;SPAN&gt;.query()&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;all_features&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;workOrder_fset&lt;/SPAN&gt;&lt;SPAN&gt;.features&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;#MAIN TABLE INFORMATION&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;valve_url&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;''&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;valve_lyr&lt;/SPAN&gt;&lt;SPAN&gt; = FeatureLayer(&lt;/SPAN&gt;&lt;SPAN&gt;valve_url&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;valve_sdf&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;pd&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;DataFrame&lt;/SPAN&gt;&lt;SPAN&gt;.spatial.from_layer(&lt;/SPAN&gt;&lt;SPAN&gt;valve_lyr&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;valve_fset&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;valve_lyr&lt;/SPAN&gt;&lt;SPAN&gt;.query()&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;valve_features&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;valve_fset&lt;/SPAN&gt;&lt;SPAN&gt;.features&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;#MERGE TABLES&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;overlap_rows&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;pd&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;merge&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;left&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;inspections_sdf&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;right&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;valve_sdf&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;how&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;'inner'&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;left_on&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;'PARENT_GLOBALID'&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt;right_on&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;'GlobalID'&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;valve_updates&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;valve_fset&lt;/SPAN&gt;&lt;SPAN&gt;.features&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;valve_updates&lt;/SPAN&gt;&lt;SPAN&gt;.reverse()&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;for&lt;/SPAN&gt; &lt;SPAN&gt;g&lt;/SPAN&gt; &lt;SPAN&gt;in&lt;/SPAN&gt; &lt;SPAN&gt;overlap_rows&lt;/SPAN&gt;&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;'PARENT_GLOBALID'&lt;/SPAN&gt;&lt;SPAN&gt;]:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;inspection_feature&lt;/SPAN&gt;&lt;SPAN&gt;= [&lt;/SPAN&gt;&lt;SPAN&gt;f&lt;/SPAN&gt; &lt;SPAN&gt;for&lt;/SPAN&gt; &lt;SPAN&gt;f&lt;/SPAN&gt; &lt;SPAN&gt;in&lt;/SPAN&gt; &lt;SPAN&gt;all_features&lt;/SPAN&gt; &lt;SPAN&gt;if&lt;/SPAN&gt; &lt;SPAN&gt;f&lt;/SPAN&gt;&lt;SPAN&gt;.attributes[&lt;/SPAN&gt;&lt;SPAN&gt;'PARENT_GLOBALID'&lt;/SPAN&gt;&lt;SPAN&gt;] == &lt;/SPAN&gt;&lt;SPAN&gt;g&lt;/SPAN&gt;&lt;SPAN&gt;][&lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;valve_feature&lt;/SPAN&gt;&lt;SPAN&gt; = [&lt;/SPAN&gt;&lt;SPAN&gt;f&lt;/SPAN&gt; &lt;SPAN&gt;for&lt;/SPAN&gt; &lt;SPAN&gt;f&lt;/SPAN&gt; &lt;SPAN&gt;in&lt;/SPAN&gt; &lt;SPAN&gt;valve_features&lt;/SPAN&gt; &lt;SPAN&gt;if&lt;/SPAN&gt; &lt;SPAN&gt;f&lt;/SPAN&gt;&lt;SPAN&gt;.attributes[&lt;/SPAN&gt;&lt;SPAN&gt;'GlobalID'&lt;/SPAN&gt;&lt;SPAN&gt;] == &lt;/SPAN&gt;&lt;SPAN&gt;g&lt;/SPAN&gt;&lt;SPAN&gt;][&lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;workOrder_edit&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;inspection_feature&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;approval_edit&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;valve_feature&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;workOrder_edit&lt;/SPAN&gt;&lt;SPAN&gt;.attributes[&lt;/SPAN&gt;&lt;SPAN&gt;'ASSETID'&lt;/SPAN&gt;&lt;SPAN&gt;] = &lt;/SPAN&gt;&lt;SPAN&gt;approval_edit&lt;/SPAN&gt;&lt;SPAN&gt;.attributes[&lt;/SPAN&gt;&lt;SPAN&gt;'ASSETID'&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;workOrder_edit&lt;/SPAN&gt;&lt;SPAN&gt;.attributes[&lt;/SPAN&gt;&lt;SPAN&gt;'TestingField'&lt;/SPAN&gt;&lt;SPAN&gt;] = &lt;/SPAN&gt;&lt;SPAN&gt;approval_edit&lt;/SPAN&gt;&lt;SPAN&gt;.attributes[&lt;/SPAN&gt;&lt;SPAN&gt;'VALVETYPE'&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;update_result&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;inspections_lyr&lt;/SPAN&gt;&lt;SPAN&gt;.edit_features(&lt;/SPAN&gt;&lt;SPAN&gt;updates&lt;/SPAN&gt;&lt;SPAN&gt;=[&lt;/SPAN&gt;&lt;SPAN&gt;workOrder_edit&lt;/SPAN&gt;&lt;SPAN&gt;])&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;time&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;sleep&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;5&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 21 Mar 2023 20:28:45 GMT</pubDate>
    <dc:creator>ScottLehto4</dc:creator>
    <dc:date>2023-03-21T20:28:45Z</dc:date>
    <item>
      <title>A Many-to-One DataFrame Merge then Get a Value from Main Table</title>
      <link>https://community.esri.com/t5/arcgis-api-for-python-questions/a-many-to-one-dataframe-merge-then-get-a-value/m-p/1270070#M8524</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; I feel what I am attempting to do is pretty straightforward, but I cannot find an example of it.&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;I have a related &lt;STRONG&gt;inspections table&lt;/STRONG&gt; that I am looking to join to the &lt;STRONG&gt;parent table&lt;/STRONG&gt; using a &lt;STRONG&gt;GUID/GLOBALID&lt;/STRONG&gt;. From there I want to get a string value from a field (&lt;STRONG&gt;ID&lt;/STRONG&gt;) from the &lt;STRONG&gt;parent table&lt;/STRONG&gt; record and paste it into any related records in the &lt;STRONG&gt;inspections&lt;/STRONG&gt; table.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;The code I have accomplishes this (&lt;STRONG&gt;partly&lt;/STRONG&gt;) but only for &lt;STRONG&gt;one&lt;/STRONG&gt; related record in the &lt;STRONG&gt;inspections&lt;/STRONG&gt; table. If there are multiple &lt;STRONG&gt;inspections&amp;nbsp;&lt;/STRONG&gt;for that single feature, the remaining related records will have a &lt;STRONG&gt;null valu&lt;/STRONG&gt;e for ID.&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Can someone point me the right direction? Thank you!&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Here is What I Have so Far:&lt;span class="lia-unicode-emoji" title=":kissing_face:"&gt;😗&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;from&lt;/SPAN&gt;&lt;SPAN&gt; arcgis &lt;/SPAN&gt;&lt;SPAN&gt;import&lt;/SPAN&gt;&lt;SPAN&gt; GIS&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;from&lt;/SPAN&gt;&lt;SPAN&gt; arcgis.features &lt;/SPAN&gt;&lt;SPAN&gt;import&lt;/SPAN&gt;&lt;SPAN&gt; FeatureLayer&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;import&lt;/SPAN&gt; &lt;SPAN&gt;pandas&lt;/SPAN&gt; &lt;SPAN&gt;as&lt;/SPAN&gt; &lt;SPAN&gt;pd&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;from&lt;/SPAN&gt; &lt;SPAN&gt;datetime&lt;/SPAN&gt; &lt;SPAN&gt;import&lt;/SPAN&gt; &lt;SPAN&gt;datetime&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;timedelta&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;import&lt;/SPAN&gt; &lt;SPAN&gt;time&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;token&lt;/SPAN&gt;&lt;SPAN&gt; = GIS(&lt;/SPAN&gt;&lt;SPAN&gt;f&lt;/SPAN&gt;&lt;SPAN&gt;''&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;#INSPECTION TABLE -&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;RELATEDTABLE&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;inspections_url =''&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;inspections_lyr&lt;/SPAN&gt;&lt;SPAN&gt; = FeatureLayer(&lt;/SPAN&gt;&lt;SPAN&gt;inspections_url&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;inspections_sdf&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;pd&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;DataFrame&lt;/SPAN&gt;&lt;SPAN&gt;.spatial.from_layer(&lt;/SPAN&gt;&lt;SPAN&gt;inspections_lyr&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;inspections_fset&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;inspections_lyr&lt;/SPAN&gt;&lt;SPAN&gt;.query(&lt;/SPAN&gt;&lt;SPAN&gt;where&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;"ASSETID=null"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;out_fields&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;'PARENT_GLOBALID,ASSETID'&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;inspection_features&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;inspections_fset&lt;/SPAN&gt;&lt;SPAN&gt;.features&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;#get all inspection features&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;workOrder_fset&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;inspections_lyr&lt;/SPAN&gt;&lt;SPAN&gt;.query()&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;all_features&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;workOrder_fset&lt;/SPAN&gt;&lt;SPAN&gt;.features&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;#MAIN TABLE INFORMATION&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;valve_url&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;''&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;valve_lyr&lt;/SPAN&gt;&lt;SPAN&gt; = FeatureLayer(&lt;/SPAN&gt;&lt;SPAN&gt;valve_url&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;valve_sdf&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;pd&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;DataFrame&lt;/SPAN&gt;&lt;SPAN&gt;.spatial.from_layer(&lt;/SPAN&gt;&lt;SPAN&gt;valve_lyr&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;valve_fset&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;valve_lyr&lt;/SPAN&gt;&lt;SPAN&gt;.query()&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;valve_features&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;valve_fset&lt;/SPAN&gt;&lt;SPAN&gt;.features&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;#MERGE TABLES&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;overlap_rows&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;pd&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;merge&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;left&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;inspections_sdf&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;right&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;valve_sdf&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;how&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;'inner'&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;left_on&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;'PARENT_GLOBALID'&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt;right_on&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;'GlobalID'&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;valve_updates&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;valve_fset&lt;/SPAN&gt;&lt;SPAN&gt;.features&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;valve_updates&lt;/SPAN&gt;&lt;SPAN&gt;.reverse()&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;for&lt;/SPAN&gt; &lt;SPAN&gt;g&lt;/SPAN&gt; &lt;SPAN&gt;in&lt;/SPAN&gt; &lt;SPAN&gt;overlap_rows&lt;/SPAN&gt;&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;'PARENT_GLOBALID'&lt;/SPAN&gt;&lt;SPAN&gt;]:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;inspection_feature&lt;/SPAN&gt;&lt;SPAN&gt;= [&lt;/SPAN&gt;&lt;SPAN&gt;f&lt;/SPAN&gt; &lt;SPAN&gt;for&lt;/SPAN&gt; &lt;SPAN&gt;f&lt;/SPAN&gt; &lt;SPAN&gt;in&lt;/SPAN&gt; &lt;SPAN&gt;all_features&lt;/SPAN&gt; &lt;SPAN&gt;if&lt;/SPAN&gt; &lt;SPAN&gt;f&lt;/SPAN&gt;&lt;SPAN&gt;.attributes[&lt;/SPAN&gt;&lt;SPAN&gt;'PARENT_GLOBALID'&lt;/SPAN&gt;&lt;SPAN&gt;] == &lt;/SPAN&gt;&lt;SPAN&gt;g&lt;/SPAN&gt;&lt;SPAN&gt;][&lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;valve_feature&lt;/SPAN&gt;&lt;SPAN&gt; = [&lt;/SPAN&gt;&lt;SPAN&gt;f&lt;/SPAN&gt; &lt;SPAN&gt;for&lt;/SPAN&gt; &lt;SPAN&gt;f&lt;/SPAN&gt; &lt;SPAN&gt;in&lt;/SPAN&gt; &lt;SPAN&gt;valve_features&lt;/SPAN&gt; &lt;SPAN&gt;if&lt;/SPAN&gt; &lt;SPAN&gt;f&lt;/SPAN&gt;&lt;SPAN&gt;.attributes[&lt;/SPAN&gt;&lt;SPAN&gt;'GlobalID'&lt;/SPAN&gt;&lt;SPAN&gt;] == &lt;/SPAN&gt;&lt;SPAN&gt;g&lt;/SPAN&gt;&lt;SPAN&gt;][&lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;workOrder_edit&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;inspection_feature&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;approval_edit&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;valve_feature&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;workOrder_edit&lt;/SPAN&gt;&lt;SPAN&gt;.attributes[&lt;/SPAN&gt;&lt;SPAN&gt;'ASSETID'&lt;/SPAN&gt;&lt;SPAN&gt;] = &lt;/SPAN&gt;&lt;SPAN&gt;approval_edit&lt;/SPAN&gt;&lt;SPAN&gt;.attributes[&lt;/SPAN&gt;&lt;SPAN&gt;'ASSETID'&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;workOrder_edit&lt;/SPAN&gt;&lt;SPAN&gt;.attributes[&lt;/SPAN&gt;&lt;SPAN&gt;'TestingField'&lt;/SPAN&gt;&lt;SPAN&gt;] = &lt;/SPAN&gt;&lt;SPAN&gt;approval_edit&lt;/SPAN&gt;&lt;SPAN&gt;.attributes[&lt;/SPAN&gt;&lt;SPAN&gt;'VALVETYPE'&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;update_result&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;inspections_lyr&lt;/SPAN&gt;&lt;SPAN&gt;.edit_features(&lt;/SPAN&gt;&lt;SPAN&gt;updates&lt;/SPAN&gt;&lt;SPAN&gt;=[&lt;/SPAN&gt;&lt;SPAN&gt;workOrder_edit&lt;/SPAN&gt;&lt;SPAN&gt;])&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;time&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;sleep&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;5&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 21 Mar 2023 20:28:45 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-python-questions/a-many-to-one-dataframe-merge-then-get-a-value/m-p/1270070#M8524</guid>
      <dc:creator>ScottLehto4</dc:creator>
      <dc:date>2023-03-21T20:28:45Z</dc:date>
    </item>
    <item>
      <title>Re: A Many-to-One DataFrame Merge then Get a Value from Main Table</title>
      <link>https://community.esri.com/t5/arcgis-api-for-python-questions/a-many-to-one-dataframe-merge-then-get-a-value/m-p/1271274#M8545</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.esri.com/t5/user/viewprofilepage/user-id/647665"&gt;@ScottLehto4&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;You can achieve this using a Python dictionary. Two examples in the code commented below, one for a single attribute and one for multiple attributes.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="python"&gt;from arcgis import GIS
from arcgis.features import FeatureLayer

## connect to agol/portal
agol = GIS("home")

## the parent table - contains unique GlobalID
valve_url = ""
valve_lyr = FeatureLayer(valve_url)

## the related table - contain many related records to parent table
inspections_url = ""
inspections_lyr = FeatureLayer(inspections_url)

## a dictionary to store the glabalid as key, and attributes as the value
valve_dict = {}

################################################################################
## eg 1 - update one field

## query the valve dataset and populate the dictionary
valve_fset = valve_lyr.query()

## iterate through features and add the GlobalID as key and ASSETID as value
for f in valve_fset:
    valve_dict[f.attributes["GlobalID"]] = f.attributes["ASSETID"]

## update the related table
inspections_fset = inspections_lyr.query()

## for each feature in the related table
for f in inspections_fset:
    pguid = f.attributes["PARENT_GLOBALID"]
    ## if the PARENT_GLOBALID is a key in the dictionary
    if pguid in valve_dict:
        ## the field you want to update in related table
        f.attributes["ASSETID"] = valve_dict[pguid]

## print to identify success/failures with update
print(inspections_lyr.edit_features(updates=inspections_fset))

################################################################################
## eg 2 - update multiple fields

## query the valve dataset and populate the dictionary
valve_fset = valve_lyr.query()

## iterate through features and add the GlobalID as key and a list containing ASSETID and VALVETYPE as the value
for f in valve_fset:
    valve_dict[f.attributes["GlobalID"]] = [f.attributes["ASSETID"], f.attributes["VALVETYPE"]]

## update the related table
inspections_fset = inspections_lyr.query()

## for each feature in the related table
for f in inspections_fset:
    pguid = f.attributes["PARENT_GLOBALID"]
    ## if the PARENT_GLOBALID is a key in the dictionary
    if pguid in valve_dict:
        ## the fields you want to update in related table
        ## get first value in list from dictionary entry
        f.attributes["ASSETID"] = valve_dict[pguid][0]
        ## get second value in list from dictionary entry
        f.attributes["VALVETYPE"] = valve_dict[pguid][1]

## print to identify success/failures
print(inspections_lyr.edit_features(updates=inspections_fset))&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 24 Mar 2023 09:24:18 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-python-questions/a-many-to-one-dataframe-merge-then-get-a-value/m-p/1271274#M8545</guid>
      <dc:creator>Clubdebambos</dc:creator>
      <dc:date>2023-03-24T09:24:18Z</dc:date>
    </item>
  </channel>
</rss>

