如何将小区域人口合并至对应大区域后与事故数据集关联
实现方案
可以直接通过常用数据处理库的内置函数实现,以下是两种主流工具的实现逻辑:
Python(基于pandas库)
核心用到map()、groupby()、merge()三个函数,步骤如下:
- 先定义TA到对应大区的映射字典,覆盖所有TA条目
ta_region_map = { "基督城": "坎特伯雷", "塞尔温": "坎特伯雷", "阿什伯顿": "坎特伯雷", "蒂马鲁": "坎特伯雷", "皇后镇湖区": "奥塔哥", "中奥塔哥": "奥塔哥", "克鲁萨": "奥塔哥", # 剩余大区对应的TA映射按规则补充完整即可 }
- 给人口数据集新增大区字段
population['region'] = population['TA'].map(ta_region_map)
- 按大区维度汇总总人口
region_pop_total = population.groupby('region', as_index=False)['Population'].sum()
- 按大区字段关联两份数据集
final_result = crashes.merge(region_pop_total, on='region', how='left')
R(基于dplyr包)
核心用到mutate()+case_when()、group_by()+summarise()、left_join()三个组合函数,步骤如下:
- 给人口数据集新增大区字段并汇总大区人口
library(dplyr) region_pop_total <- population %>% mutate(region = case_when( TA %in% c("基督城","塞尔温","阿什伯顿","蒂马鲁") ~ "坎特伯雷", TA %in% c("皇后镇湖区","中奥塔哥","克鲁萨") ~ "奥塔哥", # 剩余大区的映射规则按要求补充即可 )) %>% group_by(region) %>% summarise(Population = sum(Population, na.rm = T))
- 关联两份数据集
final_result <- crashes %>% left_join(region_pop_total, by = "region")
注意事项
- 需确保TA到大区的映射规则覆盖所有TA条目,避免汇总时出现空值
- 关联时默认保留事故表的所有大区条目,可根据需求调整关联方式(如内连接)
内容的提问来源于stack exchange,提问作者scumbagsurfer
相关产品推荐
相关产品推荐

