如何将 pandas df 与 geopandas df 合并以在 shapefile 上绘图

How to merge a pandas df with a geopandas df for plotting on a shapefile

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

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

states.plot()

我还有下面的df,就是USArrests数据集,可以找到here on Kaggle.

我想做的是合并这两个数据集,这样我就可以用 USArrests 中的特征颜色图绘制 shapefile。我运行下面的代码来合并数据集。

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 上绘制颜色图?谢谢!

请注意,我正在使用以下 guide 来帮助我,但它不涵盖我的特定任务

使用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