首页 > 解决方案 > 如何将 pandas df 与 geopandas df 合并以在 shapefile 上绘图

问题描述

我正在使用可以在 Github上找到的以下 shapefile 。我不打算包含输出,但这里是作为 geopandas df 读取它并绘制 shapefile 的代码。

states = geopandas.read_file('usa-states-census-2014.shp')
states.head()

states.plot()

我还有以下 df,这是USArrests可以在 Kaggle上找到的数据集。

我想要做的是合并这两个数据集,这样我就可以用USArrests. 我运行以下代码来合并数据集。

df = pd.read_csv("USArrests.csv")
df.rename(columns = {'Unnamed: 0':'NAME'}, inplace = True)
merged = pd.merge(df, states, on=['NAME']).drop_duplicates(subset=['NAME'])

合并有效,但是现在当我运行时,states.plot()我得到了一个线图,我假设这是因为 df 不再是GeoDataFrame.

我的问题是,如何从中获取数据USArrests并使用它在 shapefile 上绘制颜色图?谢谢!

请注意,我正在使用以下指南来帮助我,但它不涵盖我的具体任务

标签: pythonpandasdataframegeopandas

解决方案


使用GeoDataFrame.merge方法。这样它仍然是 GeoDataFrame。在您的情况下发生的merged只是 pandas.DataFrame 而已。

merged = states.merge(df, on='NAME').drop_duplicates(subset=['NAME'])

我猜测正确的形式,因为您没有显示任何数据帧的结构。有关更多信息,请参阅文档https://geopandas.readthedocs.io/en/latest/docs/user_guide/mergingdata.html?highlight=merge#attribute-joins


推荐阅读