Удалить поле (Управление данными)

Краткая информация

Удаляет один или несколько полей из класса пространственных объектов, таблицы, слоя объектов или набора растровых данных.

Использование

    Внимание:

    Этот инструмент изменяет входные значения. Более подробно о стратегиях предотвращения нежелательных изменений данных см. в разделе Инструменты, которые изменяют или обновляют входные данные.

  • Можно указать либо поля для удаления, либо поля для сохранения.

    • Для удаления полей используйте параметр Поля, чтобы указать поля для удаления, и установите для параметра Метод значение Удалить поля.
    • Для сохранения полей используйте параметр Поля, чтобы указать поля для сохранения, и установите для параметра Метод значение Сохранить поля.

  • Невозможно удалить поля из не нативных форматов, использующихся в ArcGIS только для чтения, например, наборов данных VPF и CAD.

Параметры

ПодписьОписаниеТип данных
Входная таблица

Таблица, содержащая поля, которые будут удалены. Существующая входная таблица будет изменена.

Mosaic Layer; Raster Layer; Table View
Поля

Поля, которые должны быть удалены или сохранены из входной таблицы, как указано в параметре Метод. Можно удалить только необязательные поля.

Field
Метод
(Дополнительный)

Указывает, будут ли поля, заданные параметром Поля, удалены или сохранены.

  • Удаление полейПоля, указанные параметром Поля, будут удалены. Используется по умолчанию.
  • Сохранить поляПоля, указанные параметром Поля, будут сохранены; все остальные поля будут удалены.
  • Удаление полейПоля, указанные параметром drop_field, будут удалены. Используется по умолчанию.
  • Сохранить поляПоля, указанные параметром drop_field, будут сохранены; все остальные поля будут удалены.
String

Производные выходные данные

ПодписьОписаниеТип данных
Обновить входную таблицу

Обновленный набор данных.

Table View; Raster Layer; Mosaic Layer

arcpy.management.DeleteField(in_table, drop_field, {method})
ИмяОписаниеТип данных
in_table

Таблица, содержащая поля, которые будут удалены. Существующая входная таблица будет изменена.

Mosaic Layer; Raster Layer; Table View
drop_field
[drop_field,...]

Поля, которые должны быть удалены или сохранены из входной таблицы, как указано в параметре method. Можно удалить только необязательные поля.

Field
method
(Дополнительный)

Указывает, будут ли поля, указанные параметром drop_field, удалены или сохранены.

  • DELETE_FIELDSПоля, указанные параметром drop_field, будут удалены. Используется по умолчанию.
  • KEEP_FIELDSПоля, указанные параметром drop_field, будут сохранены; все остальные поля будут удалены.
String

Производные выходные данные

ИмяОписаниеТип данных
out_table

Обновленный набор данных.

Table View; Raster Layer; Mosaic Layer

Пример кода

DeleteField, пример 1 (окно Python)

Следующий скрипт окна Python демонстрирует, как использовать функцию DeleteField для удаления указанных полей.

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.management.CopyFeatures("majorrds.shp", "C:/output/majorrds_copy.shp")
arcpy.management.DeleteField("C:/output/majorrds_copy.shp", 
                             ["STREET_NAM", "LABEL", "CLASS"])
DeleteField, пример 2 (окно Python)

Следующий скрипт окна Python демонстрирует, как использовать функцию DeleteField для сохранения только указанных полей.

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.management.CopyFeatures("majorrds.shp", "C:/output/majorrds_copy.shp")

arcpy.management.DeleteField("C:/output/majorrds_copy.shp", 
                             ["STREET_ALIAS", "DISTRICT_ID"], "KEEP_FIELDS")
Удалить поле. Пример 3 (автономный скрипт)

В следующем автономном скрипте показано использование функции DeleteField.

# Name: DeleteField_Example3.py
# Description: Keep several fields from a feature class and delete all the rest of the fields
  
# Import system modules
import arcpy
 
# Set environment settings
arcpy.env.workspace = "C:/data"
 
# Set local variables
inFeatures = "accident.dbf"
outFeatureClass = "C:/output/new_accident.dbf"
fields = ["STREET_NAM", "LABEL", "CLASS"]
method = "KEEP_FIELDS"
 
# Run CopyFeatures to make a new copy of the feature class
#  Use CopyRows if you have a table
arcpy.management.CopyFeatures(inFeatures, outFeatureClass)
 
# Run DeleteField
arcpy.management.DeleteField(outFeatureClass, fields, method)
DeleteField, пример 4 (автономный скрипт)

Используйте функцию DeleteField, чтобы удалить все ненужные поля из класса пространственных объектов или таблицы.

# Description: Delete unnecessary fields from a feature class or table.
 
# Import system modules
import arcpy
 
# 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(inTable)

# Make a copy of the input (so you can maintain the original as is)
if desc.datasetType == "FeatureClass":
    arcpy.management.CopyFeatures(inTable, updatedTable)
else:
    arcpy.management.CopyRows(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. Exclude required fields 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:]

# Run DeleteField to delete all fields in the field list. 
arcpy.management.DeleteField(updatedTable, fieldNameList)