Vairāk

FieldMap Arcpy sapludināšanā tikai atlasītajiem laukiem

FieldMap Arcpy sapludināšanā tikai atlasītajiem laukiem


Es mēģinu izmantot FieldMap in arcpy, lai apvienotu tikai dažus vienus un tos pašus laukus no 8 funkciju klasēm. Visās dažādās pazīmju klasēs ir daudz dažādu lauku, bet es esmu identificējis 9 laukus, kurus vēlos savā pēdējā apvienotajā funkciju klasē. Tā vietā, lai apvienotu visus laukus, kurus es identificēju, tas izvēlas tikai pirmo lauku manā sarakstā, un es galu galā saņemu apvienotu failu ar vienu lauku "COUNTY_F". Kas man pietrūkst?

fClasses = [] i = 0 #Apmeklējiet MyGDB.gdb un pievienojiet katras funkcijas klases nosaukumu masīvam fcs = arcpy.ListFeatureClasses () fc 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 lauki Sapludināt inFields = [" COUNTY_F "," UNIQUE_ID "," nodokļu maksātājs "," PARCEL_ID "," CURRENTUSE_CODE "," CURRENTUSE_DESC "," PRESENTUSE_CODE "," PRESENTUSE_DESC "," ACRES_ASSES "] fm = arcpy. .name) fm_type.addInputField ("Jefferson_WorkingForest_2013", lauks) fm_type.addInputField ("King_WorkingForest_2013", field) fm_type.addInputField ("Kittitas_WorkingForest_2013", field) fm_type "Mason_WorkingForest_2013", lauks) fm_type.addInputField ("Pierce_WorkingForest_2013", lauks) fm_type.addInputField ("Snohomish_WorkingForest_2013", field) fm.addFieldMap (fm_spep)! " arcpy.Merge_management (fClasses, "Apvienots", fm) print "Apvienot: SUCCESS."

Iespējams, jūsu izpratne par FieldMap ir nepareiza. Tā kā viena lauka saistība ar vienu FieldMap objektu, jums ir jāizveido deviņi FieldMap objekti. Turklāt inFields ir saraksts, jūs nevarat izmantot field.name.

Mainiet kodu šādi, es domāju, ka rezultāts, kuru vēlaties iegūt.

importējiet arcpy fClasses = [] i = 0 #Cilpa caur MyGDB.gdb un pievienojiet katras funkcijas klases nosaukumu masīvam fcs = arcpy.ListFeatureClasses () fc fcs: fClasses.append (fc) i = i+1 print fClasses #Shows kā "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 lauki Sapludināt inFields = [ "COUNTY_F", "UNIQUE_ID", "nodokļu maksātājs", "PARCEL_ID", "CURRENTUSE_CODE", "CURRENTUSE_DESC", "PRESENTUSE_CODE", "PRESENTUSE_DESC", "ACRES_ASSES"] fm = arcpy.FieldMappings () fm_types = [] i diapazonā (9): fm_types.append (arcpy.FieldMap ()) fm_type in fm_types fClass : ierakstīts inFields: fm_type.addInputField (fClass, field) outField = fm_type.outputField outField.name = field fm_type.outputField = outField #Sequentially add deviņi FieldObject fm.addFieldMap (fm_type) print "Lauki kartēti! arcpy.Merge_management (fClasses, "Apvienots", fm) print "Apvienot: SUCCESS."

Atvainojiet, es kļūdījos, rakstot cilpu.

importējiet arcpy fClasses = [] i = 0 #Cilpa caur MyGDB.gdb un pievienojiet katras funkcijas klases nosaukumu masīvam fcs = arcpy.ListFeatureClasses () fc fcs: fClasses.append (fc) i = i+1 print fClasses #Shows kā "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 lauki Sapludināt inFields = [ "COUNTY_F", "UNIQUE_ID", "nodokļu maksātājs", "PARCEL_ID", "CURRENTUSE_CODE", "CURRENTUSE_DESC", "PRESENTUSE_CODE", "PRESENTUSE_DESC", "ACRES_ASSES"] fm = arcpy.FieldMappings () i diapazonā (9): fm_type = arcpy.FieldMap () fClass in fClasses: fm_type.addInputField (fClass, inField) outField = fm_type.outputField outField.name = inFields [i] fm_type.outputField = outField #Sekvenciāli pievienojiet deviņus FieldObject fm.addFieldMap (fm_type) drukāt "Lauki kartēti!" arcpy.Merge_management (fClasses, "Apvienots", fm) print "Apvienot: SUCCESS."

Python Pandas apvieno tikai noteiktas kolonnas

Vai ir iespējams apvienot tikai dažas kolonnas? Man ir DataFrame df1 ar kolonnām x, y, z un df2 ar kolonnām x, a, b, c, d, e, f utt.

Es vēlos apvienot abus DataFrames uz x, bet es vēlos apvienot tikai kolonnas df2.a, df2.b - nevis visu DataFrame.

Rezultāts būtu DataFrame ar x, y, z, a, b.

Es varētu apvienoties un pēc tam izdzēst nevēlamās kolonnas, bet šķiet, ka ir labāka metode.