I'm not totally sure I follow what you're after, but here's an attempt based on my understanding. I have some points, and polygons both with fields "FIELD1" and "FIELD2". For visual purposes, FIELD1 are colors, and FIELD2s are some numeric value, that as per your instructions (I think) are only filled out in the polygon layer. OIDs are shown below for additional clarity, the white lettering with black halos being the polygon layer.
My approach is perform a Spatial Join, and then perform comparisons between the FIELD1s--if there is a spatial match, and FIELD1 also matches, then FIELD2 should be copied from the polygon to the point. I don't know what your experience with Python is, but you should be able to update the values in the "INPUTS" section, and either run this externally in the IDE of your choice, or simply paste the below directly into the Python window in ArcGIS Pro and hit "enter."
import arcpy
arcpy.env.overwriteOutput = True
# INPUTS----------------------------------------------------------------------#
# All of these "INPUTS" must be updated by the user.
# Leave the leading "r" and the quotations.
input_point = r"THIS IS A FILE PATH TO YOUR POINT FEATURE CLASS"
input_polygon = r"THIS IS A FILE PATH TO YOUR POLYGON FEATURE CLASS"
point_flds = ["FIELD1", "FIELD2"]
polygon_flds = ["FIELD1", "FIELD2"]
output_point = r"THIS IS A FILE PATH TO YOUR OUTPUT POINTS"
# MAIN----------------------------------------------------------------------#
# This block appends "_1" if input fields are the same between feature classes.
# Spatial join output cannot have fields of the same name.
updated_polygon_flds = []
for pnt_fld, poly_fld in zip(point_flds, polygon_flds):
if pnt_fld == poly_fld:
updated_polygon_flds.append(f"{poly_fld}_1")
else:
updated_polygon_flds.append(poly_fld)
# Join the polygon info to the point geometry. Output will be points.
arcpy.analysis.SpatialJoin(
target_features=input_point,
join_features=input_polygon,
out_feature_class=output_point,
join_operation="JOIN_ONE_TO_MANY",
join_type="KEEP_ALL",
match_option="INTERSECT", )
# Read the output feature class; specifically, field lists from both inputs.
with arcpy.da.UpdateCursor(output_point, point_flds + updated_polygon_flds) as ucurs:
for pnt_f1, pnt_f2, poly_f1, poly_f2 in ucurs:
# If spatially related, and Field1's are equiavalent, copy over Field2
# from the polygon feature class into the point feature class.
if pnt_f1 == poly_f1:
ucurs.updateRow([pnt_f1, poly_f2, poly_f1, poly_f2])
Here's the output. To be clear, the first FIELD1 and FIELD2 are from the point, and the second FIELD1 and FIELD 2 are from the polygons. These are aliases of course.
For example, the original point #1 (TARGET_FID = 1 in the output) is RED. It's within a RED polygon, therefore we should calculate FIELD2 in the points to be 3, because that's FIELD2 in the polygon. OID 3 in the below table has a "JOIN_FID" of -1, signifying it's not within a polygon at all. So the point-version of FIELD2 is not calculated, and both FIELD1 and FIELD2 (at the end of the table, from the polygon, are null). TARGET_FID 4 is within a polygon, but the colors don't match--FIELD2 not calculated.
TARGET_FID 5 is represented twice, because it overlaps two polygons. One of the copies of this point matches the underlying polygon, and is calculated. The other doesn't, and is not calculated.