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

使用groupby和lambda生成带Polygon及拼接name列的GeoDataFrame

实现方案

你可以在groupby的apply回调中同时返回拼接后的name和几何对象,再转为GeoDataFrame即可,完整代码如下:

import pandas as pd
import geopandas as gpd
from shapely.geometry import Polygon

# 按grp_name分组,同时计算拼接name和Polygon几何
group_res = df.groupby('grp_name').apply(lambda g: pd.Series({
    'name': '|'.join(g['name']),
    'geometry': Polygon(gpd.points_from_xy(g['loc_x'], g['loc_y']))
}))

# 显式指定geometry列转为GeoDataFrame
gdf = gpd.GeoDataFrame(group_res, geometry='geometry')

运行后得到的gdf索引就是分组键grp_name的值,完全符合你需要的输出格式。

注意事项

Polygon要求至少3个坐标点才能正常生成,如果你的分组存在点数小于3的情况,可以在lambda中加判断兼容:

lambda g: pd.Series({
    'name': '|'.join(g['name']),
    'geometry': Polygon(gpd.points_from_xy(g['loc_x'], g['loc_y'])) if len(g)>=3 else None
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:57:02