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

Pandas执行字符串转元组代码时纬度数值显示不全如何修复

问题根因

异常由两个独立问题共同导致:

  • 手写切片逻辑存在致命缺陷:原代码提取经度时用a.find('-')定位截取起点,Python字符串find()方法找不到目标字符时会返回-1而非抛出错误,当经度为正、字符串内无负号时,截取起点直接跳到字符串末尾,解析出的数值完全错误;同时硬编码字符偏移量的写法容错性极差,字符串内空格、标点位置稍有变动就会解析失败。
  • Pandas默认显示精度限制:Jupyter/Colab环境下Pandas默认仅展示浮点数前6位小数,存储在元组类型内的浮点数不会触发高精度渲染,即使数值存储正确,视觉上也会出现“数值被截断、显示不全”的效果。
修复方案

1. 替换容错性极低的逐行循环切片逻辑

不要用硬编码位置的字符串截取写法,改用更稳定的分割逻辑解析经纬度,避免找不到负号时的解析错误:

new_LNGLAT = []
for s in df['LATLNG']:
    # 去掉首尾大括号,按逗号分割成纬度、经度两个片段
    lat_part, lng_part = s.strip('{}').split(',')
    # 每个片段按冒号分割,取后半段转浮点数
    lat = float(lat_part.split(':')[1])
    lng = float(lng_part.split(':')[1])
    new_LNGLAT.append((lat, lng))
df['LATLNG'] = new_LNGLAT

如果习惯用Pandas向量化操作,可以用更简洁的写法,无需手写循环,运行效率更高:

df['LATLNG'] = df['LATLNG'].str.strip('{}').apply(
    lambda x: tuple(float(v.split(':')[1]) for v in x.split(','))
)

如果LATLNG字段是标准JSON格式(键带双引号),可以直接用JSON模块解析,稳定性更强:

import json
df['LATLNG'] = df['LATLNG'].apply(lambda x: (json.loads(x)['lat'], json.loads(x)['lng']))

长期处理空间数据更建议把经纬度拆成独立数值列,不要存在元组里,后续做距离计算、地图可视化、空间关联时调用更方便,拆分代码参考:

df[['latitude', 'longitude']] = pd.DataFrame(df['LATLNG'].tolist(), index=df.index)

2. 调整Pandas全局显示配置,解决数值展示截断问题

在脚本最开头加入以下配置,把浮点数显示精度调到GPS坐标够用的级别,即可看到完整经纬度数值:

import pandas as pd
# 设置浮点数最多展示12位小数,覆盖民用GPS最高精度要求
pd.set_option('display.float_format', '{:.12f}'.format)

如果不想修改全局配置,仅需要核对LATLNG字段的完整值,可以直接逐行打印,不会触发Pandas的显示截断:

for coord in df['LATLNG']:
    print(coord)
验证说明

修复后重新输出DataFrame,既不会出现经纬度解析错误的问题,也能看到完整的经纬度数值,不存在显示截断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 23:21:25