Suite

FieldMap dans Arcpy Merge pour les champs sélectionnés uniquement


J'essaie d'utiliser FieldMap dans arcpy pour fusionner seulement quelques-uns des mêmes champs de 8 classes d'entités. Il existe de nombreux champs différents dans toutes les différentes classes d'entités, mais j'ai identifié les 9 champs que je veux dans ma classe d'entités fusionnée finale. Au lieu de fusionner tous les champs que j'identifie, il ne choisit que le premier champ de ma liste et je me retrouve avec un fichier fusionné avec un seul champ "COUNTY_F". Qu'est-ce que je rate?

fClasses = [] i=0 # Faites une boucle dans MyGDB.gdb et ajoutez chaque nom de classe d'entités au tableau fcs = arcpy.ListFeatureClasses() pour fc dans 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 Les champs pour la fusion infields = [ "COUNTY_F", "UNIQUE_ID", "CONTRIBUABLE", "PARCEL_ID", "CURRENTUSE_CODE", "CURRENTUSE_DESC", « PRESENTUSE_CODE ", "PRESENTUSE_DESC", "ACRES_ASSES"] fm = arcpy.FieldMappings() fm_type = arcpy.FieldMap() pour le champ dans inFields : fm_type.addInputField( "Callam_WorkingForest_2013", field.name) fm_type.addInputField( "Gbor .name) fm_type.addInputField( "Jefferson_WorkingForest_2013", champ) fm_type.addInputField( "King_WorkingForest_2013", champ) fm_type.addInputField( "Kittitas_WorkingForest_2013", champ) fm_type.addInputField( "Mason_WorkingForest_2013", champ) fm_type.addInputField( "Pierce_WorkingForest_2013", champ) fm_type.addInputField( "Snohomish_WorkingForest_2013", champ) fm.addFieldMap(fm_type) print "Champs mappés !" arcpy.Merge_management(fClasses, "Fusionné", fm) print "Fusionner : SUCCÈS."

Est-ce que votre compréhension de FieldMap est probablement erronée. Parce qu'une relation de champ avec un objet FieldMap, vous devez donc créer neuf objets FieldMap dans votre cas. De plus, inFields est une liste, vous ne pouvez pas utiliser field.name.

Modifiez le code comme suit, je pense que le résultat que vous souhaitez obtenir.

importer arcpy fClasses = [] i=0 #Loop through MyGDB.gdb et ajouter chaque nom de classe d'entités au tableau fcs = arcpy.ListFeatureClasses() pour fc dans fcs : fClasses.append(fc) i = i+1 print fClasses #Shows comme « Callam_WorkingForest_2013, GraysHarbor_WorkingForest_2013, Jefferson_WorkingForest_2013, King_WorkingForest_2013, Kittitas_WorkingForest_2013, Mason_WorkingForest_2013, Pierce_WorkingForest_2013, Snohomish_WorkingForest_2013 », « ID ZoneMap pour Mercred_CUSE, « ID » , « ID » , « ID » "PRESENTUSE_CODE", "PRESENTUSE_DESC", "ACRES_ASSES"] fm = arcpy.FieldMappings() fm_types =[] pour i dans range(9) : fm_types.append(arcpy.FieldMap()) pour fm_type dans fm_types : pour fClass dans fClasses : pour les fichiers inFields : fm_type.addInputField(fClass,field) outField=fm_type.outputField outField.name=field fm_type.outputField=outField #Ajouter séquentiellement neuf FieldObject fm.addFieldMap(fm_type) print !" arcpy.Merge_management(fClasses, "Fusionné", fm) print "Fusionner : SUCCÈS."

Je suis désolé, j'ai eu tort d'écrire en boucle.

importer arcpy fClasses = [] i=0 #Loop through MyGDB.gdb et ajouter chaque nom de classe d'entités au tableau fcs = arcpy.ListFeatureClasses() pour fc dans fcs : fClasses.append(fc) i = i+1 print fClasses #Shows comme « Callam_WorkingForest_2013, GraysHarbor_WorkingForest_2013, Jefferson_WorkingForest_2013, King_WorkingForest_2013, Kittitas_WorkingForest_2013, Mason_WorkingForest_2013, Pierce_WorkingForest_2013, Snohomish_WorkingForest_2013 », « ID Zone » , « ID Map Fields for Mer. "PRESENTUSE_CODE", "PRESENTUSE_DESC", "ACRES_ASSES"] fm = arcpy.FieldMappings() pour i dans range(9) : fm_type=arcpy.FieldMap() pour fClass dans fClasses : fm_type.addInputField(fClass,inFields[i]) outField=fm_type.outputField outField.name=inFields[i] fm_type.outputField=outField #Ajouter séquentiellement neuf FieldObject fm.addFieldMap(fm_type) imprimer "Champs mappés !" arcpy.Merge_management(fClasses, "Fusionné", fm) print "Fusionner : SUCCÈS."

Python Pandas ne fusionne que certaines colonnes

Est-il possible de ne fusionner que certaines colonnes ? J'ai un DataFrame df1 avec les colonnes x, y, z et df2 avec les colonnes x, a, b, c, d, e, f, etc.

Je souhaite fusionner les deux DataFrames sur x, mais je souhaite uniquement fusionner les colonnes df2.a, df2.b - pas l'intégralité du DataFrame.

Le résultat serait un DataFrame avec x, y, z, a, b.

Je pourrais fusionner puis supprimer les colonnes indésirables, mais il semble qu'il existe une meilleure méthode.


Voir la vidéo: mosaic raster file:how to merge raster data: merge dem data (Octobre 2021).