I have over one hundred dbf files to merge. Each of files have two columns: ID
and another field which differs from one file to another. I want to merge those fields based on ID
such that each raw corresponds to an unique ID
containing all merged fields. For example:
file 1: ID FirstName 1 Alan 2 Bell file 2: ID LastName 1 R 2 A merged file: ID FirstName LastName 1 Alan R 2 Bell A
Solution:
I have a series of files named as 'rawfile200101', 'rawfiles200102',...,'rawfile201104'. Each of files have two columns: ID
and another field same as the file name. I want to merge those fields based on ID
such that each raw corresponds to an unique ID
containing all merged fields.
Different from Stata, the "merge" process is called "Join Field" in ArcGIS. Since I have lots of these files, I will do this in batch. Take the following as an example
import arcpy
from arcpy import env
from arcpy.sa import *
arcpy.CheckOutExtension("Spatial")
env.overwriteOutput = True
yrmn = ['200102', '200103', '200104']
for list in yrmn:
inFeatures = "I:/rawfile200101.dbf"
joinField = "VALUE"
joinTable = "I:/rawfile{}.dbf".format(list)
fieldList = ["rawfile{}".format(list)]
arcpy.JoinField_management (inFeatures, joinField, joinTable, joinField, fieldList)
-
2This looks like you just need to use Join Field in a manual test. Would you be able to edit your Question to mention if that solves the test case you describe and, if so, details about where a Python script needs to look to find these and your other hundred files.PolyGeo– PolyGeo ♦2014年01月05日 21:24:34 +00:00Commented Jan 5, 2014 at 21:24
-
1Thanks very much for your help, @PolyGeo. IT WORKS!!! I am very new to python and arcgis. What I want is called "Merge" in statistics programing like Stata, but "Merge" here is totally different story, which doing things like "Append" in Stata. Similar confusions have caused lots of troubles to me.user25458– user254582014年01月06日 05:35:30 +00:00Commented Jan 6, 2014 at 5:35
2 Answers 2
What you are calling a Merge appears to be what I would use the Join Field tool for because it ...
Joins the contents of a table to another table based on a common attribute field. The input table is updated to contain the fields from the join table. You can select which fields from the join table will be added to the input table.
you can either iterate using arcpy.da.searchCursor and arcpy.da.insertCursor (easy is you have perfect matching between the ID's) (see http://resources.arcgis.com/en/help/main/10.1/index.html#//018w00000011000000), or use the built in function arcpy.Addjoin_management (http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//001700000064000000)
Explore related questions
See similar questions with these tags.