2017-08-23 29 views
1

私は海と海の限界を含む.shpファイルを持っています。しかし、それらのすべてをプロットするのではなく、私は6に興味があります。ジオパンダは、パンダのように、同様のデータフレームを作成します(「df」と呼ぶ)。選択した「df」の領域だけを持つ新しいデータフレーム(「df1」)を作成することは可能ですか?Geopandasを使用して.shpファイルの特定の領域を選択してください

from mpl_toolkits.basemap import Basemap 
import numpy as np 
import matplotlib.pyplot as plt 
import geopandas as gp 

tes = gp.read_file(r'your\path\World_Seas_IHO_v1\World_Seas.shp') 

tes1 = tes[(tes.NAME == "North Pacific Ocean"), 
      (tes.NAME == "South Pacific Ocean")] 

tes1.plot() 

plt.show() 
plt.ion() 

私はこれを実行すると、「TES1は」エラーを取得します。

「シリーズのオブジェクトは、このように、彼らはハッシュ化することができない、変更可能です。」

ありがとうございます!

答えて

2

(tes.NAME == "North Pacific Ocean"), (tes.NAME == "South Pacific Ocean")は、ブール値系列のtupleです。これをインデクサーとして渡すことはできません。ビット単位または|を使用してブール値系列を結合し、結果を使用してデータフレームをスライスしたいとします。

from mpl_toolkits.basemap import Basemap 
import numpy as np 
import matplotlib.pyplot as plt 
import geopandas as gp 

tes = gp.read_file(r'your\path\World_Seas_IHO_v1\World_Seas.shp') 

tes1 = tes[(tes.NAME == "North Pacific Ocean") | 
      (tes.NAME == "South Pacific Ocean")] 

tes1.plot() 

plt.show() 
plt.ion() 

それとも、ちょっとpiRSquared isin

tes = gp.read_file(r'your\path\World_Seas_IHO_v1\World_Seas.shp') 

tes1 = tes[tes.NAME.isin(['North Pacific Ocean', 'South Pacific Ocean'])] 

tes1.plot() 

plt.show() 
plt.ion() 

enter image description here

+0

を使用することができます。私が試したし、私が得たことだった。 空GeoDataFrame 列:[Gazetteer_、ID、NAME、ジオメトリ] = [] –

+0

は私が必要とする実際の形状ファイル インデックスを。どこで入手できますか? – piRSquared

+0

http://www.marineregions.org/downloads.php> IHO海域>バージョン1(2005)>海域シェイプファイル(1,733kb) –

関連する問題