You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

geopandas如何新增字段存储同PC_PLANNO的其他PARCEL_SPI列表

实现方案

针对450万级别的数据量,优先推荐用高性能操作避免逐行遍历拖慢速度,以下是两种可直接落地的方案:

方案1:字典映射实现(内存占用低、适配高重复率字段场景)

# 1. 先生成PC_PLANNO到对应所有PARCEL_SPI列表的映射字典
plan_spi_map = spine_copy.groupby('PC_PLANNO')['PARCEL_SPI'].agg(list).to_dict()
# 2. 逐行过滤自身ID,空结果自动存None
spine_copy['Same_code'] = spine_copy.apply(
    lambda row: [spi for spi in plan_spi_map[row['PC_PLANNO']] if spi != row['PARCEL_SPI']] or None,
    axis=1
)

方案2:分组transform实现(逻辑更直观)

# 1. 分组给每组所有行返回本组全部PARCEL_SPI列表
spine_copy['tmp_all_spi'] = spine_copy.groupby('PC_PLANNO')['PARCEL_SPI'].transform(lambda x: [x.tolist()]*len(x))
# 2. 过滤自身ID后生成目标字段
spine_copy['Same_code'] = spine_copy.apply(
    lambda row: [spi for spi in row['tmp_all_spi'] if spi != row['PARCEL_SPI']] or None,
    axis=1
)
# 删除临时辅助列
spine_copy.drop('tmp_all_spi', axis=1, inplace=True)

优化提示

  • 跑全量前建议先抽1%的小样例验证逻辑正确性,避免全量跑完发现逻辑问题浪费时间
  • 如果PC_PLANNO的重复率非常高,优先选方案1,内存开销会比方案2低60%以上
  • 追求极致速度可以把列表过滤逻辑改成numpy向量化操作,运行效率能提升3-5倍

内容的提问来源于stack exchange,提问作者lev72748

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 00:24:02