見出し画像

共通するキーで属性結合をしよう

今回はQGISだと手順がもっさりしていたテーブル結合(属性結合)を、GeoPandas(Pandas)を使って処理したいと思います。

0.QGISの属性結合の仕方(カンタンなおさらい)

CSVを読み込んで、シェープデータとの結合させて、その状態では保存されていないのでエクスポート。少しだが手作業が発生する・・・じゃあ、簡潔にしよう。

1.まずは読み込みを

test.shp : 地理座標を持ったデータ(結合キー:id)
buf.csv : 結合させたいデータ(結合キー:Id)

import geopandas as gpd
import pandas as pd
shp = gpd.read_file('test.shp',encoding='utf-8')
buf = pd.read_csv('buf.csv',encoding='utf-8')

スクリーンショット 2021-04-01 1.28.48

スクリーンショット 2021-04-01 1.28.37

2.結合コードはこれだけ

merge_data = pd.merge(shp, buf, left_on='id', right_on='Id')

このコードで結合します。shpをleft、bufをrightとしてキーを指定しています。
もし同一のキー名であれば、left_onとかright_onとか使わずに、「on='id'」でいけます。ちなみに下記コードでも同じ結果になります。わかりやすい方法で結合しましょう。もしかすると、速度違ったりするかもしれないけど、今回は省略。

merge_data = shp.merge(buf, left_on='id',right_on='Id')

スクリーンショット 2021-04-01 1.31.01

3.シェープデータの生成

merge_data.to_file('merge.shp',encoding='utf-8')

エンコーディングを指定しないと「ISO-8859-1」という文字コードになります。利用しやすいよう、しっかり指定してあげましょう。

4.もっと汎用性を高めればかなり使える

上の6行にプラスして、コマンドライン引数の取得対応をすれば、いちいちコードを書かなくても良くなるのでオススメ。

この記事が気に入ったらサポートをしてみませんか?