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

如何将多边形转换的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 11:54:59