TLDR:我正在尝试将 GeoPandas Dataframe 的行组合成一行,其中它们的形状组合成一行。
\n我目前正在开展一个小项目,该项目要求我使用一些不同的指标创建加拿大卫生区域的交互式等值线图。
\n当我注意到行数不相同时,我合并了两个 Dataframe,一个包含每个健康区域每年的人口估计值,另一个包含健康区域的几何图形的 GeoDataframe。
\n经过进一步检查,我意识到我一直使用的两个数据集并不包含完全相同的健康区域。我得到的形状文件比人口数据有更多的健康区域,出于方法上的原因,人口数据合并了其中的一些区域。
\n注意到差异后,我重新进行合并以显示差异,以便我可以找出需要汇总的内容。
\nmerged_gdf = gdf.merge(df, on=\'HR_UID\') \n#HR_UID is just the name of the column with the codes for the health regions, since they \n#have slightly different names in different datasets, it\'s easier to merge on code.\nprint(list(set(df[\'HEALTH_REGION\'])-set(merged_gdf[\'HEALTH_REGION_y\'])),list(set(gdf[\'HR_UID\'])-set(df[\'HR_UID\'].unique())))\nRun Code Online (Sandbox Code Playgroud)\n在这里,我看到缺失的卫生区域是 [\'Mamawetan/Keewatin/Athabasca, Saskatchewan\']。GeoDataframe 将这三个区域分开,代码为 4711、4712、4713,而人口数据将它们汇总到一个区域,代码为 4714。
\n我打算组合 GeoDataframe 中与人口数据中组合的健康区域相对应的行,以组合它们的多边形。\n我返回 GeoDataframe 尝试组合与这些区域相对应的三行:
\nold_hr=gdf[gdf[\'HR_UID\'].isin({\'4711\',\'4712\',\'4713\'})]\nRun Code Online (Sandbox Code Playgroud)\nold_hr=gdf[gdf[\'HR_UID\'].isin({\'4711\',\'4712\',\'4713\'})]\nRun Code Online (Sandbox Code Playgroud)\n现在我意识到我不太确定如何在 GeoDataframe 中组合多边形。我尝试过使用dissolve(on=\'HEALTH_REGION\'),尽管那不起作用。我花了一段时间在网上四处寻找,但到目前为止,我似乎找不到任何人问这个特定的问题 - 也许我错过了一些东西..