Delete Field (Data Management)
Summary
This tool deletes one or more fields from a table, feature class, feature layer, or raster dataset.
Usage
-
This tool can be used with any table; ArcSDE, file, or personal geodatabase feature class; coverage; raster dataset; or shapefile.
-
Fields cannot be deleted from nonnative, read-only data formats in ArcGIS, such as VPF and CAD datasets.
-
The Drop Field parameter Add Field button is used only in ModelBuilder. In ModelBuilder, where the preceding tool has not been run or its derived data does not exist, the Drop Field parameter may not be populated with field names. The Add Field button allows you to add expected fields so you can complete the Delete Field dialog box and continue to build your model.
Syntax
Parameter | Explanation | Data Type |
in_table |
The table containing the fields to be deleted. The existing input table will be modified. | Mosaic Layer; Raster Catalog Layer; Raster Layer; Table View |
drop_field [drop_field,...] | The fields to be dropped from the input table. Only nonrequired fields may be deleted. | Field |
Code Sample
The following Python window script demonstrates how to use the DeleteField tool in immediate mode:
import arcpy
from arcpy import env
env.workspace = "C:/data"
arcpy.CopyFeatures_management("majorrds.shp", "C:/output/majorrds_copy.shp")
arcpy.DeleteField_management("C:/output/majorrds_copy.shp",
["STREET_NAM", "LABEL", "CLASS"])
The following stand-alone script demonstrates how to use the DeleteField tool:
# Name: DeleteField_Example2.py
# Description: Delete several fields from a feature class
# Author: ESRI
# Import system modules
import arcpy
from arcpy import env
# Set environment settings
env.workspace = "C:/data"
# Set local variables
inFeatures = "accident.dbf"
outFeatureClass = "C:/output/new_accident.dbf"
dropFields = ["STREET_NAM", "LABEL", "CLASS"]
# Execute CopyFeatures to make a new copy of the feature class
# Use CopyRows if you have a table
arcpy.CopyFeatures_management(inFeatures, outFeatureClass)
# Execute DeleteField
arcpy.DeleteField_management(outFeatureClass, dropFields)
Use DeleteField to clear all unnecessary fields from a feature class or table.
# Name: DeleteFields_clearfields.py
# Description: Delete unrequired fields from a feature class or tble.
# Import system modules
import arcpy
from arcpy import env
try:
# Get user-supplied input and output arguments
inTable = arcpy.GetParameterAsText(0)
updatedTable = arcpy.GetParameterAsText(1)
# Describe the input (need to test the dataset and data types)
desc = arcpy.Describe(updatedTable)
# Make a copy of the input (so we can mantain the original as is)
if desc.datasetType == "FeatureClass":
arcpy.CopyFeatures_management(inTable, updatedTable)
else:
arcpy.CopyRows_management(inTable, updatedTable)
# Use ListFields to get a list of field objects
fieldObjList = arcpy.ListFields(updatedTable)
# Create an empty list that will be populated with field names
fieldNameList = []
# For each field in the object list, add the field name to the
# name list. If the field is required, exclude it, to prevent errors
for field in fieldObjList:
if not field.required:
fieldNameList.append(field.name)
# dBASE tables require a field other than an OID and Shape. If this is
# the case, retain an extra field (the first one in the original list)
if desc.dataType in ["ShapeFile", "DbaseTable"]:
fieldNameList = fieldNameList[1:]
# Execute DeleteField to delete all fields in the field list.
arcpy.DeleteField_management(updatedTable, fieldNameList)
except Exception as e:
# If an error occurred, print line number and error message
import traceback
import sys
tb = sys.exc_info()[2]
print("Line {0}".format(tb.tb_lineno))
print(e.message)