Select 使用 Geopandas 的 .shp 文件的特定区域

Select specific regions of .shp file using Geopandas

我有一个包含海洋界限的 .shp 文件。但是,我没有绘制所有这些,而是​​只对 6 感兴趣。Geopandas 创建了类似于数据框的东西(我们称之为 "df"),就像 Pandas 一样。是否可以创建一个新的数据框 ("df1"),它只包含 "df" 的那些选定区域?

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 objects are mutable, thus they cannot be hashed."

有什么想法吗?

谢谢!

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