フィールドの削除 (Delete Field) (データ管理)

サマリー

テーブル、フィーチャクラス、フィーチャ レイヤー、またはラスター データセットから 1 つ以上のフィールドを削除します。

使用法

  • 削除するフィールドまたは維持するフィールドのいずれかを指定できます。

    • フィールドを削除するには、[フィールド] パラメーターを使用して削除するフィールドを指定し、[方法] パラメーターを [フィールドの削除] オプションに設定します。
    • フィールドを維持するには、[フィールド] パラメーターを使用して維持するフィールドを指定し、[方法] パラメーターを [フィールドの維持] オプションに設定します。

  • フィールドは、VPF や CAD データセットなど、ArcGIS で非ネイティブの読み取り専用データ形式からは削除できません。

パラメーター

ラベル説明データ タイプ
入力テーブル

削除するフィールドを含むテーブル。 既存の入力テーブルが変更されます。

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_FIELDSdrop_field パラメーターで指定したフィールドが削除されます。 これがデフォルトです。
  • KEEP_FIELDSdrop_field パラメーターで指定したフィールドが維持され、他のすべてのフィールドが削除されます。
String

派生した出力

名前説明データ タイプ
out_table

更新されたデータセット。

Table View; Raster Layer; Mosaic Layer

コードのサンプル

DeleteField の例 1 (Python ウィンドウ)

次の Python ウィンドウ スクリプトは、指定したフィールドを削除する DeleteField 関数の使用方法を示しています。

import arcpy
arcpy.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"])
DeleteField の例 2 (Python ウィンドウ)

次の Python ウィンドウ スクリプトは、指定したフィールドのみを維持する DeleteField 関数の使用方法を示しています。

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

arcpy.DeleteField_management("C:/output/majorrds_copy.shp", 
                             ["STREET_ALIAS", "DISTRICT_ID"], "KEEP_FIELDS")
DeleteField の例 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"
 
# 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, 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.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. 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:]

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