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

如何在Python DataFrame中从Object类型列提取坐标(无需迭代)

高效提取DataFrame中JSON格式的坐标值

你当前用字符串切片提取坐标的方式太依赖固定字符位置,一旦JSON格式出现变动(比如多了空格、键的顺序调整)就会失效,这里给你几个更稳健且无需手动迭代的方案:

方案一:用pd.json_normalize解析JSON(最稳健)

这个方法是pandas官方推荐的处理JSON列的方式,能完美适配标准JSON格式,不受键顺序、空格等因素影响:

import pandas as pd
import json

# 将JSON字符串列转为字典列表
location_dicts = trip_data['pickuplocation'].apply(json.loads)
# 展开JSON为结构化DataFrame
normalized_df = pd.json_normalize(location_dicts)
# 拆分coordinates数组为单独的纬度、经度列
trip_data['latitude'] = normalized_df['coordinates'].str[0].astype(float)
trip_data['longitude'] = normalized_df['coordinates'].str[1].astype(float)

方案二:用正则表达式提取(速度快)

如果你的JSON格式非常固定,也可以用正则直接匹配坐标数值,无需导入json模块,操作更轻量化:

import pandas as pd

# 用正则匹配方括号内的两个浮点数
coords = trip_data['pickuplocation'].str.extract(r'\[([\d.]+),\s*([\d.]+)\]')
# 将提取结果转为float类型并赋值给新列
trip_data['latitude'] = coords[0].astype(float)
trip_data['longitude'] = coords[1].astype(float)

为什么不推荐切片方法?

切片完全依赖字符串的固定长度和字符位置,比如[31:-13]这种写法,只要JSON里多一个空格、键名长度变化,就会提取出错误的数值,容错性极差,生产环境里绝对不建议用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 02:15:33