python - 如何比较两个不同数据框中的系列值并插入新值?
问题描述
我想使用 GeoPandas 来可视化一些选举数据。我有两个 DataFrame - 第一个 DataFrame 包含几何数据和选区标签,第二个 DataFrame 包含投票数据。我想将第二个 DataFrame 中的一些投票数据添加到第一个 DataFrame 中。
这是第一个DataFrame的结构:
Precinct_2020 geometry
345 Precinct 4-8 POLYGON ((-95.93331 41.22970, -95.93330 41.230...
346 Precinct 4-9 POLYGON ((-95.95904 41.23577, -95.95889 41.235...
347 Precinct 4-3 POLYGON ((-95.94178 41.20966, -95.94178 41.211...
348 Precinct 2-17 POLYGON ((-95.95277 41.26891, -95.95255 41.270...
349 Precinct 8-83 POLYGON ((-96.04293 41.33597, -96.04294 41.337...
这是第二个DataFrame的结构:
Precinct_2020 diff
0 Precinct 1-2 67
1 Precinct 1-3 67
2 Precinct 1-4 27
3 Precinct 1-5 63
4 Precinct 1-7 43
我尝试通过使用两个嵌套的 for 循环匹配区域标签来做到这一点,如下所示:
for entry in douglas_county_df:
for item in voting_diff:
if item['Precinct_2020'] in entry['Precinct_2020']:
entry['diff'] = item['diff']
本质上,我想将第二个 DataFrame 中的投票差值“diff”添加到第一个 DataFrame 中的相应区域。我收到一个错误,字符串索引必须是整数。处理这个问题的最佳方法是什么?
预期输出:
Precinct_2020 geometry
345 Precinct 4-8 POLYGON ((-95.93331 41.22970, -95.93330 41.230... [diff for 4-8]
346 Precinct 4-9 POLYGON ((-95.95904 41.23577, -95.95889 41.235... [diff for 4-9]
347 Precinct 4-3 POLYGON ((-95.94178 41.20966, -95.94178 41.211... [diff for 4-3]
348 Precinct 2-17 POLYGON ((-95.95277 41.26891, -95.95255 41.270... [diff for 2-17]
349 Precinct 8-83 POLYGON ((-96.04293 41.33597, -96.04294 41.337... [diff for 8-83]
谢谢!
解决方案
解决方案
如果您有两个要合并的数据框,请使用(就像评论中提到的 David Erickson 一样):
COLUMN_TO_MERGE_ON = "Precinct_2020"
pandas.merge(df_left, df_right, how="left", on=COLUMN_TO_MERGE_ON)
笔记:
- 为了满足您的要求,我们正在使用
left join
. 因此,how = left
。 df_left
并且df_right
是您的数据框。如果您只想要数据框中的几列df_right
,请使用df_right[list_of_target_columns]
asdf_right
。- 请参阅:Left join using merge in geopandas - 这个 stackexchange 问题向您展示了如何。
参考:
我鼓励您探索以下参考资料。
推荐阅读
- bash - 如何在命名管道中使用文件命令
- python - 我如何在用另一个脚本 Tkinter 编写的框架中显示小部件
- php - Laravel 异步调用函数
- javascript - Apps Scripts 和 Google Natural Language API 上的循环功能
- android - 空对象引用上的“java.lang.String com.google.firebase.auth.FirebaseUser.getEmail()”
- python - 如何使用邻接矩阵确定从一个节点到另一个节点的所有路由?
- java - 检查一个值是否存在于 Android 的子 Firebase 数据库中
- python - 2 因子近似的 2 组点的最大距离
- c# - 将“第一个”数组的值放入“第二个”的问题。C#
- python - 有没有更快的方法来屏蔽数组?