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()
我有一个包含海洋界限的 .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()