使用Python拆分括号内字符串对 提取经纬度存入DataFrame
实现方法
根据你存储坐标的列类型不同,可以选择对应方法:
- 若坐标列为字符串格式(和你给出的示例一致,带括号、逗号分隔的文本),用正则提取即可:
import pandas as pd # 提取括号内的纬度、经度并转为浮点类型 df[['latitude', 'longitude']] = df['coords'].str.extract(r'\((.*),\s*(.*)\)').astype(float)
- 若坐标列已经是元组格式,直接拆分元组赋值即可:
df[['latitude', 'longitude']] = pd.DataFrame(df['coords'].tolist(), index=df.index)
完整可运行测试示例
你可以直接运行下面的代码验证效果,使用的就是你提供的示例数据:
import pandas as pd # 构造与示例一致的原始数据 raw_data = [ "(45.349586099999996, -75.81031967988278)", "(-37.77922725, 175.2010323246593)", "(-42.9945669, 170.7100413)", "(-39.2711067, 174.154795)", "(51.2800275, 1.0802533)", "(-41.30222105, 172.89453190955697)", "(-35.3712702, 173.7405337)", "(-45.7255555, 168.2936808)", "(-40.3284102, 175.8190684)", "(-45.1299859, 169.5248818)", "(-37.9503756, 176.93828736155422)" ] df = pd.DataFrame({'coords': raw_data}) # 拆分坐标为两列 df[['latitude', 'longitude']] = df['coords'].str.extract(r'\((.*),\s*(.*)\)').astype(float) # 输出前5行验证结果 print(df.head())
运行后生成的DataFrame会自带latitude和longitude两个数值列,可直接用于后续数据处理。
内容的提问来源于stack exchange,提问作者user86907
相关产品推荐
相关产品推荐

