Mehr

FieldMap in Arcpy Merge nur für ausgewählte Felder

FieldMap in Arcpy Merge nur für ausgewählte Felder


Ich versuche, FieldMap in arcpy zu verwenden, um nur einige der gleichen Felder aus 8 Feature-Classes zusammenzuführen. Es gibt viele verschiedene Felder in allen verschiedenen Feature-Classes, aber ich habe die 9 Felder identifiziert, die ich in meiner endgültigen zusammengeführten Feature-Class haben möchte. Anstatt alle Felder zusammenzuführen, die ich identifiziere, wählt es nur das erste Feld in meiner Liste aus und ich erhalte eine zusammengeführte Datei mit einem Feld "COUNTY_F". Was vermisse ich?

fClasses = [] i=0 #Schleife durch MyGDB.gdb und füge jeden Feature-Class-Namen zum Array hinzu fcs = arcpy.ListFeatureClasses() für fc in fcs: fClasses.append(fc) i = i+1 print fClasses #Shows as " Clallam_WorkingForest_2013, GraysHarbor_WorkingForest_2013, Jefferson_WorkingForest_2013, King_WorkingForest_2013, Kittitas_WorkingForest_2013, Mason_WorkingForest_2013, Pierce_WorkingForest_2013, Snohomish_WorkingForest_2013" #Map Felder zum Verbinden inFields = [ "COUNTY_F", "UNIQUE_ID", "STEUERZAHLER", "PARCEL_ID", "CURRENTUSE_CODE", "CURRENTUSE_DESC", „PRESENTUSE_CODE ", "PRESENTUSE_DESC", "ACRES_ASSES"] fm = arcpy.FieldMappings() fm_type = arcpy.FieldMap() für Feld in inFields: fm_type.addInputField( "Clallam_WorkingForest_2013", field.name) fm_type.addInputsField_2013 field .name) fm_type.addInputField( "Jefferson_WorkingForest_2013", Feld) fm_type.addInputField( "King_WorkingForest_2013", Feld) fm_type.addInputField( "Kittitas_WorkingForest_2013", Feld) fm_type.addInputField( "Mason_WorkingForest_2013", Feld) fm_type.addInputField( "Pierce_WorkingForest_2013", Feld) fm_type.addInputField( "Snohomish_WorkingForest_2013", Feld) fm.addFieldMap(fm_type) print "Felder zugeordnet!" arcpy.Merge_management(fClasses, "Merged", fm) print "Merge: SUCCESS."

Ist wahrscheinlich Ihr Verständnis von FieldMap falsch. Da eine Feldbeziehung mit einem FieldMap-Objekt besteht, müssen Sie in Ihrem Fall neun FieldMap-Objekte erstellen. Außerdem ist inFields eine Liste, Sie können field.name nicht verwenden.

Ändern Sie den Code wie folgt, ich denke, dass das Ergebnis, das Sie erhalten möchten.

import arcpy fClasses = [] i=0 #Schleife durch MyGDB.gdb und füge jeden Feature-Class-Namen zum Array hinzu fcs = arcpy.ListFeatureClasses() für fc in fcs: fClasses.append(fc) i = i+1 print fClasses #Shows as "Clallam_WorkingForest_2013, GraysHarbor_WorkingForest_2013, Jefferson_WorkingForest_2013, King_WorkingForest_2013, Kittitas_WorkingForest_2013, Mason_WorkingForest_2013, Pierce_WorkingCENT_2013, Snohomish_WorkingForest_2013", #CODE_ "PRESENTUSE_CODE", "PRESENTUSE_DESC", "ACRES_ASSES"] fm = arcpy.FieldMappings() fm_types =[] for i in range(9): fm_types.append(arcpy.FieldMap()) for fm_type in fm_types: for fClass in fClasses : für in inFields abgelegte: fm_type.addInputField(fClass,field) outField=fm_type.outputField outField.name=field fm_type.outputField=outField #Füge sequentiell neun FieldObjects hinzu fm.addFieldMap(fm_type) print "Fields arcpy.Merge_management(fClasses, "Merged", fm) print "Merge: SUCCESS."

Es tut mir leid, ich war falsch, Schleife zu schreiben.

import arcpy fClasses = [] i=0 #Schleife durch MyGDB.gdb und füge jeden Feature-Class-Namen zum Array hinzu fcs = arcpy.ListFeatureClasses() für fc in fcs: fClasses.append(fc) i = i+1 print fClasses #Shows as "Clallam_WorkingForest_2013, GraysHarbor_WorkingForest_2013, Jefferson_WorkingForest_2013, King_WorkingForest_2013, Kittitas_WorkingForest_2013, Mason_WorkingForest_2013, Pierce_WorkingCENT_2013, Snohomish_WorkingForest_2013", #CODE_ "PRESENTUSE_CODE", "PRESENTUSE_DESC", "ACRES_ASSES"] fm = arcpy.FieldMappings() für i in range(9): fm_type=arcpy.FieldMap() für fClass in fClasses: fm_type.addInputField(fClass,inFields[i]) outField=fm_type.outputField outField.name=inFields[i] fm_type.outputField=outField #Füge nacheinander neun FieldObjects hinzu fm.addFieldMap(fm_type) print "Felder zugeordnet!" arcpy.Merge_management(fClasses, "Merged", fm) print "Merge: SUCCESS."

Python Pandas führen nur bestimmte Spalten zusammen

Ist es möglich, nur einige Spalten zusammenzuführen? Ich habe einen DataFrame df1 mit den Spalten x, y, z und df2 mit den Spalten x, a, b, c, d, e, f usw.

Ich möchte die beiden DataFrames auf x zusammenführen, aber ich möchte nur die Spalten df2.a, df2.b zusammenführen - nicht den gesamten DataFrame.

Das Ergebnis wäre ein DataFrame mit x, y, z, a, b.

Ich könnte die unerwünschten Spalten zusammenführen und dann löschen, aber es scheint, als gäbe es eine bessere Methode.


Schau das Video: ArcPy: Working with Feature Data