如何将多边形转换的Pandas DataFrame拆分为单经纬度对多行
拆分多边形经纬度DataFrame为单行单对经纬度并保留索引
方法1:使用explode(推荐,Pandas 0.25+)
如果你的DataFrame中经纬度对是以列表形式存储在某一列(比如列名为coords),直接用explode方法即可自动拆分并保留原始索引:
import pandas as pd # 假设原始DataFrame示例 df = pd.DataFrame({ 'coords': [[(116.397, 39.908), (116.407, 39.908), (116.407, 39.918)]], 'polygon_id': ['poly_001'] }, index=[0]) # 拆分经纬度列 df_exploded = df.explode('coords', ignore_index=False) # 将经纬度对拆分为单独的经度、纬度列(可选) df_exploded[['longitude', 'latitude']] = pd.DataFrame(df_exploded['coords'].tolist(), index=df_exploded.index) print(df_exploded)
运行后会得到每行一组经纬度对,且原始索引完整保留。
方法2:兼容旧版Pandas的apply方法
如果你的Pandas版本低于0.25,可以用apply结合pd.Series实现:
# 基于上面的原始df df_split = df['coords'].apply(pd.Series).stack().reset_index(level=1, drop=True).to_frame('coords') # 合并其他列 df_split = df_split.join(df.drop('coords', axis=1)) # 拆分经纬度为单独列(可选) df_split[['longitude', 'latitude']] = pd.DataFrame(df_split['coords'].tolist(), index=df_split.index) print(df_split)
注意事项
- 若经纬度是多层嵌套结构(比如MultiPolygon的嵌套列表),需先通过列表推导或递归将其扁平化,提取出所有一维的经纬度对后再拆分。
- 使用
explode时务必设置ignore_index=False,否则会丢失原始索引。
内容的提问来源于stack exchange,提问作者Namrata
相关产品推荐
相关产品推荐

