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

Pandas:拆分列中元组数据,生成独立纬度、经度列

提取Country_cord列中的经纬度到独立列

Hey there! 针对你已经生成的Country_cord列,我来分享两种简单高效的方法,把里面的纬度和经度分别提取到lat和lon列中:

方法1:用lambda函数逐个提取

这种方法直观易懂,适合分步处理:

# 提取纬度:访问元组的第二个元素的第一个值
df['lat'] = df['Country_cord'].apply(lambda x: x[1][0] if x is not None else None)
# 提取经度:访问元组的第二个元素的第二个值
df['lon'] = df['Country_cord'].apply(lambda x: x[1][1] if x is not None else None)
  • 为什么要加if x is not None?因为geolocator.geocode()可能会返回None(比如某些国家名称无法匹配到地理坐标),加上这个判断可以避免触发TypeError。
  • 逻辑说明:x代表Country_cord列的每一个元素,x[1]就是包含经纬度的子元组,x[1][0]对应纬度,x[1][1]对应经度。

方法2:用pd.Series一次性展开两列

这种方法更简洁,能同时生成lat和lon列:

import pandas as pd

# 将经纬度元组直接展开为两列
df[['lat', 'lon']] = df['Country_cord'].apply(
    lambda x: pd.Series(x[1]) if x is not None else pd.Series([None, None])
)
  • 这里利用pd.Series把经纬度元组转换成一个包含两个元素的Series,Pandas会自动把它拆分成两列赋值给lat和lon。
  • 同样处理了x is None的情况,保证数据的完整性。

注意事项

  • 确保Country_cord列的元素结构是统一的:(国家名称, (纬度, 经度)),如果有特殊格式的元素,可能需要额外做格式校验。
  • 处理完后可以用df[['lat', 'lon']].isnull().sum()检查一下有多少行没有匹配到坐标,方便后续的清洗工作。

内容的提问来源于stack exchange,提问作者punit kumar Sharma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:07:09