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)
最终效果
处理后的数据格式如下:
| Lat | Long |
|---|---|
| -31.4193332 | -64.19125129999990 |
| -31.3147283 | -64.1708031 |
内容的提问来源于stack exchange,提问作者bonafepedro
相关产品推荐
相关产品推荐

