基于DBSCAN聚类结果生成含簇面积与点数的DataFrame
解决方案
直接用Pandas的groupby结合聚合操作就能高效完成需求,这是最简洁的实现方式:
# 按簇分组,计算所需统计指标并生成面积列 cluster_metrics = df.groupby('cluster').agg( 点数=('cluster', 'count'), 纬度最小值=('lat', 'min'), 纬度最大值=('lat', 'max'), 经度最小值=('lon', 'min'), 经度最大值=('lon', 'max') ).assign(面积=lambda x: (x['纬度最大值'] - x['纬度最小值']) * (x['经度最大值'] - x['经度最小值'])) # 若仅需最终的点数和面积,可筛选保留目标列 cluster_metrics = cluster_metrics[['点数', '面积']]
说明
groupby('cluster'):按簇标签对数据分组agg():批量计算每个簇的核心统计量,其中count用于统计簇内的点数,min/max提取经纬度的极值assign():基于经纬度极值直接计算每个簇的面积,避免额外的循环操作
另外补充:你之前的cluster列赋值代码存在冗余循环,直接df['cluster'] = cluster_labels即可完成赋值(前提是cluster_labels长度与df一致)。
内容的提问来源于stack exchange,提问作者Stackoverflow Stackoverflow
相关产品推荐
相关产品推荐

