方法

ArcGIS Pro で Python を使用して、既存の CSV ファイルからフィーチャ属性テーブルに新しい行を付加する

Last Published: May 8, 2025

サマリー

ArcGIS Pro では、ArcGIS API for Python を使用して、フィーチャクラスの属性テーブル内のフィールド データ レコードを CSV ファイルから更新するプロセスを自動化できます。 この記事で説明するワークフローに従い、CSV ファイルから属性テーブルを更新して、スタンドアロン Python ファイル (.py) を使用して新しい行を追加します。 Python ファイルは、Jupyter Notebook でも実行されます。

手順

  1. 必要なモジュールをインポートします。
import arcpy
  1. フィーチャクラス ファイルの場所、csv ファイルの場所、および関連するフィールドのパラメーターを指定します。
fc = r"<featureClassPath>"
csv = r"<csvPath>"
copy_fields = ["<fieldName1>", "<fieldName2>", "<fieldName3>"]
  1. フィールドの値を格納するディクショナリを作成します。
csv_dict = {row[0]: row for row in arcpy.da.SearchCursor(csv, copy_fields)}
  1. UpdateCursor() 関数を使用してフィーチャを反復処理します。
with arcpy.da.UpdateCursor(fc, copy_fields) as cursor:
    for row in cursor:
        key = row[0]
        try:
            new_row = csv_dict[key]
        except KeyError:
            print(f"Entry not found in csv: {copy_fields[0]} = {key}")
            continue
        cursor.updateRow(new_row)
        del csv_dict[key]
  1. フィーチャクラスに新しいフィールドを挿入するよう、InsertCursor() 関数を適用します。
with arcpy.da.InsertCursor(fc, copy_fields) as cursor:
    for new_row in csv_dict.values():
        cursor.insertRow(new_row)
  1. 属性テーブルが更新されたときにメッセージを表示するよう、print() 関数を適用します。
print("<message>")

以下のコード ブロックに、完全に機能するスクリプトを示します。

fc = r"C:\Users\testUser\Documents\Article work\Article 29321\MyProject 29321\MyProject 29321.gdb\Schools_all"
csv = r"C:\Users\testUser\Documents\Article work\Article 29321\schoolLvl.csv"
copy_fields = ["NAME", "LEVEL_NO", "LEVEL"]

import arcpy
csv_dict = {row[0]: row for row in arcpy.da.SearchCursor(csv, copy_fields)}

with arcpy.da.UpdateCursor(fc, copy_fields) as cursor:
    for row in cursor:
        key = row[0]
        try:
            new_row = csv_dict[key]
        except KeyError:
            print(f"Entry not found in csv: {copy_fields[0]} = {key}")
            continue
        cursor.updateRow(new_row)
        del csv_dict[key]

with arcpy.da.InsertCursor(fc, copy_fields) as cursor:
    for new_row in csv_dict.values():
        cursor.insertRow(new_row)

print("Complete")

記事 ID: 000029321

新しい問題や一般的な問題に対する通知とソリューションの受け取り

新しい AI チャットボットから、要約された回答とビデオソリューションを入手してください。

Esri Support アプリのダウンロード

関連情報

このトピックについてさらに調べる

ArcGIS エキスパートのサポートを受ける

テクニカル サポートへのお問い合わせ

Esri Support アプリのダウンロード

ダウンロード オプションに移動