使用Pandas按Source_Polygon_ID分组聚合Neighbor_Polygon_ID列表的技术咨询
嘿,这个需求用Pandas的groupby配合聚合函数就能轻松实现,我给你详细拆解下具体方案:
具体实现步骤
1. 先看示例数据
假设你的CSV内容大概是这样的:
Source_Polygon_ID,Neighbor_Polygon_ID 1,2 1,3 2,1 2,4 3,1 3,5
2. 核心代码实现
直接上可运行的代码,每一步我都给你注释清楚:
import pandas as pd # 第一步:读取你的CSV文件,替换成实际文件路径 df = pd.read_csv("your_polygon_data.csv") # 第二步:分组并聚合邻居ID为列表 # groupby按Source_Polygon_ID分组,agg(list)把每组的Neighbor_Polygon_ID打包成列表 grouped_df = df.groupby("Source_Polygon_ID")["Neighbor_Polygon_ID"].agg(list).reset_index() # 可选:查看处理后的结果 print(grouped_df)
3. 处理后的结果
运行上面的代码后,你会得到这样的DataFrame:
Source_Polygon_ID Neighbor_Polygon_ID 0 1 [2, 3] 1 2 [1, 4] 2 3 [1, 5]
4. 额外优化方案
如果你的数据里存在重复的邻居ID(比如同一个Source对应同一个Neighbor出现多次),可以先去重再生成列表:
# 先转集合去重,再转回列表 grouped_df = df.groupby("Source_Polygon_ID")["Neighbor_Polygon_ID"].agg(lambda x: list(set(x))).reset_index()
5. 导出结果到新CSV
如果需要把处理后的结果保存成新的CSV文件,只需加一行:
grouped_df.to_csv("grouped_polygon_neighbors.csv", index=False)
内容的提问来源于stack exchange,提问作者user7590842
相关产品推荐
相关产品推荐

