Meer

FieldMap in Arcpy Merge alleen voor geselecteerde velden

FieldMap in Arcpy Merge alleen voor geselecteerde velden


Ik probeer FieldMap in arcpy te gebruiken om slechts een paar van dezelfde velden uit 8 functieklassen samen te voegen. Er zijn veel verschillende velden in alle verschillende functieklassen, maar ik heb de 9 velden geïdentificeerd die ik in mijn laatste samengevoegde functieklasse wil hebben. In plaats van alle velden samen te voegen die ik identificeer, kiest het alleen het eerste veld in mijn lijst en krijg ik een samengevoegd bestand met één veld "COUNTY_F". Wat mis ik?

fClasses = [] i=0 #Loop door MyGDB.gdb en voeg elke feature class-naam toe aan array fcs = arcpy.ListFeatureClasses() for 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 Fields Merge het bouwland = [ "COUNTY_F", "UNIQUE_ID", "BELASTINGPLICHTIGE", "PARCEL_ID", "CURRENTUSE_CODE", "CURRENTUSE_DESC", "PRESENTUSE_CODE ", "PRESENTUSE_DESC", "ACRES_ASSES"] fm = arcpy.FieldMappings() fm_type = arcpy.FieldMap() voor veld in inFields: fm_type.addInputField( "Clallam_WorkingForest_2013", field.name) fm_type.addInputHarboreld_( "Grays_Forest_Field_" .name) fm_type.addInputField( "Jefferson_WorkingForest_2013", veld) fm_type.addInputField( "King_WorkingForest_2013", veld) fm_type.addInputField( "Kittitas_WorkingForest_2013", veld) fm_type.addInputField( "Mason_WorkingForest_2013", veld) fm_type.addInputField( "Pierce_WorkingForest_2013", veld) fm_type.addInputField( "Snohomish_WorkingForest_2013", veld) fm.addFieldMap(fm_type) print "Velden in kaart gebracht!" arcpy.Merge_management(fClasses, "Samengevoegd", fm) print "Samenvoegen: SUCCES."

Is waarschijnlijk uw begrip over FieldMap verkeerd. Omdat één veldrelatie met één FieldMap-object, dus u in uw geval negen FieldMap-objecten moet maken. Bovendien is inFields een lijst, u kunt field.name niet gebruiken.

Wijzig de code als volgt,ik denk dat het resultaat dat u wilt verkrijgen.

import arcpy fClasses = [] i=0 #Loop door MyGDB.gdb en voeg elke feature class naam toe aan array fcs = arcpy.ListFeatureClasses() voor fc in fcs: fClasses.append(fc) i = i+1 print fClasses #Shows als "Clallam_WorkingForest_2013, GraysHarbor_WorkingForest_2013, Jefferson_WorkingForest_2013, King_WorkingForest_2013, Kittitas_WorkingForest_2013, Mason_WorkingForest_2013, Pierce_WorkingForest_2013, Snohomish_WorkingForest_2013" #MapFields for Merge in ", "PRESENTUSE_CODE", "PRESENTUSE_DESC", "ACRES_ASSES"] fm = arcpy.FieldMappings() fm_types =[] voor i in range (9): fm_types.append(arcpy.FieldMap()) voor fm_type in fm_types: voor fClass in fClasses : voor ingediend in inFields: fm_type.addInputField(fClass,field) outField=fm_type.outputField outField.name=veld fm_type.outputField=outField #Voeg achtereenvolgens negen FieldObject toe fm.addFieldMap(fm_type) print "Velden in kaart gebracht!" arcpy.Merge_management(fClasses, "Samengevoegd", fm) print "Samenvoegen: SUCCES."

Het spijt me, ik was verkeerd om lus te schrijven.

import arcpy fClasses = [] i=0 #Loop door MyGDB.gdb en voeg elke feature class naam toe aan array fcs = arcpy.ListFeatureClasses() voor fc in fcs: fClasses.append(fc) i = i+1 print fClasses #Shows als "Clallam_WorkingForest_2013, GraysHarbor_WorkingForest_2013, Jefferson_WorkingForest_2013, King_WorkingForest_2013, Kittitas_WorkingForest_2013, Mason_WorkingForest_2013, Pierce_WorkingForest_2013, Snohomish_WorkingForest_2013" #MapFields for Merge in ", "PRESENTUSE_CODE", "PRESENTUSE_DESC", "ACRES_ASSES"] fm = arcpy.FieldMappings() for i in range (9): fm_type=arcpy.FieldMap() for fClass in fClasses: fm_type.addInputField(fClass,inFields[i]) outField=fm_type.outputField outField.name=inFields[i] fm_type.outputField=outField #Voeg achtereenvolgens negen FieldObject toe fm.addFieldMap(fm_type) print "Velden toegewezen!" arcpy.Merge_management(fClasses, "Samengevoegd", fm) print "Samenvoegen: SUCCES."

Python Panda's voegen alleen bepaalde kolommen samen

Is het mogelijk om alleen enkele kolommen samen te voegen? Ik heb een DataFrame df1 met kolommen x, y, z en df2 met kolommen x, a, b, c, d, e, f, etc.

Ik wil de twee DataFrames op x samenvoegen, maar ik wil alleen de kolommen df2.a, df2.b samenvoegen - niet het hele DataFrame.

Het resultaat zou een DataFrame zijn met x, y, z, a, b.

Ik zou de ongewenste kolommen kunnen samenvoegen en vervolgens verwijderen, maar het lijkt erop dat er een betere methode is.


Bekijk de video: PYTHON IN ARC GIS #8 Save all polygons separately from a shape file with multiple polygon. ARCPY