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

Python:如何在DataFrame经纬度列指定位置插入小数点

修正DataFrame经纬度列的格式问题

核心思路

先将数值统一转为字符串,通过字符串切片在指定位置插入小数点,再按需转回数值类型适配后续计算。

代码实现

1. 创建示例DataFrame

import pandas as pd

# 模拟用户的原始数据(整数类型)
df = pd.DataFrame({
    'Lat': [-314193332, -313147283],
    'Long': [-6419125129999990, -641708031]
})

2. 批量修正格式

如果所有数据都是带负号的(如示例),直接用字符串切片快速处理:

# 对Lat列插入小数点
df['Lat'] = df['Lat'].astype(str).str[:3] + '.' + df['Lat'].astype(str).str[3:]
# 对Long列插入小数点
df['Long'] = df['Long'].astype(str).str[:3] + '.' + df['Long'].astype(str).str[3:]

如果数据中存在正数(如314193332),需要区分正负号调整插入位置,保证经纬度数值范围合理:

def format_coordinate(num):
    s = str(num)
    # 负数在第3个字符后插入小数点,正数在第2个字符后插入
    if s.startswith('-'):
        return f"{s[:3]}.{s[3:]}"
    else:
        return f"{s[:2]}.{s[2:]}"

# 批量应用到经纬度两列
df[['Lat', 'Long']] = df[['Lat', 'Long']].applymap(format_coordinate)

3. 转回数值类型(可选)

如果需要后续进行地理计算或分析,可将列转为float类型:

df['Lat'] = df['Lat'].astype(float)
df['Long'] = df['Long'].astype(float)

最终效果

处理后的数据格式如下:

LatLong
-31.4193332-64.19125129999990
-31.3147283-64.1708031

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 05:25:53