如何用pandas/NumPy提取DataFrame两列唯一位置对应的经纬度数据
Pandas 提取唯一位置对应经纬度的高效实现方案
直接通过统一结构拼接+去重即可实现,全程为pandas向量化操作,远快于手动拆分合并的方案,实现步骤如下:
- 先修正原始表的重复列名
原始数据表存在两个Lat、两个Long的重复列名,先重命名避免后续操作冲突:
import pandas as pd # 重命名列,明确区分起点、终点的经纬度 df.columns = ['Origin', 'Origin_Lat', 'Origin_Long', 'Destination', 'Dest_Lat', 'Dest_Long']
- 提取两组位置数据后拼接去重
分别提取起点、终点的位置+经纬度信息,统一列名后拼接,直接去重即可得到结果:
# 提取起点侧数据 df_origin = df[['Origin', 'Origin_Lat', 'Origin_Long']].rename( columns={'Origin':'Unique Location', 'Origin_Lat':'Lat', 'Origin_Long':'Long'} ) # 提取终点侧数据 df_dest = df[['Destination', 'Dest_Lat', 'Dest_Long']].rename( columns={'Destination':'Unique Location', 'Dest_Lat':'Lat', 'Dest_Long':'Long'} ) # 拼接后去重、重置索引 result = pd.concat([df_origin, df_dest], ignore_index=True).drop_duplicates().reset_index(drop=True)
- 可选:脏数据校验
如果存在同一个位置对应多组不同经纬度的情况,可以加一步校验排查问题:
# 按位置分组统计经纬度的唯一值数量 location_check = result.groupby('Unique Location')[['Lat', 'Long']].nunique() if (location_check > 1).any(axis=None): print("存在同一位置匹配多个经纬度的异常数据,请核对原始表")
内容的提问来源于stack exchange,提问作者Kimchi
相关产品推荐
相关产品推荐

