2017-08-23 54 views
1

我有一個包含海洋界限的.shp文件。但是,與其繪製所有這些圖形,我只關注6點.Geopandas創建了類似於數據框的東西(我們稱之爲「df」),就像Pandas一樣。是否有可能創建一個新的數據框(「df1」),它只包含那些「df」的選定區域?使用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」得到一個錯誤:「Series對象是可變的,因此它們不能被散列」

有什麼想法?

謝謝!

回答

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() 

或者你可以使用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

嘿piRSquared。我想和我得到的是: 空GeoDataFrame 列:[Gazetteer_,ID,姓名,幾何] 指數= [] –

+0

我需要的實際形狀文件。我在哪裏可以得到它? – piRSquared

+0

http://www.marineregions.org/downloads.php> IHO海域>第1版(2005)>海域Shapefile(1,733kb) –