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

如何在Pandas中多场景拆分经纬度组合列

解决DataFrame中location列多分隔符拆分经纬度的问题

嘿,我来帮你搞定这个经纬度拆分的麻烦!你的location列确实有点棘手,各种分隔方式混在一起:不带空格的-、带空格的/、还有直接用空格分隔的,单一的拆分规则肯定覆盖不全,这里用正则表达式就能一次性搞定所有情况,我给你讲得明明白白的,不用怕看不懂正则~

先看看你的数据样例:

print(df['location'])
# 输出:
# location
# 0 -10.8544921875-49.8238090851324
# 1 2.021484375-59.478568831926
# 2 2.021484375 / 49.823809085
# 3 -10.8544921875/ 59.478568831926
# 4 9.61795 19.33163

解决方案:用正则匹配所有分隔符

我们可以用str.split()配合正则表达式,一次性匹配所有可能的分隔符号。正则表达式写成[-\s/]+就行,我给你拆解开解释:

  • []:表示匹配括号里的任意一个字符
  • -:匹配连字符
  • \s:匹配任意空白字符(空格、制表符等)
  • /:匹配斜杠
  • +:表示前面的字符可以出现1次或多次,这样不管分隔符前后有多少空格都能匹配到

然后用这个正则来拆分列,完整代码如下:

import pandas as pd

# 构造测试数据
data = {
    'location': [
        '-10.8544921875-49.8238090851324',
        '2.021484375-59.478568831926',
        '2.021484375 / 49.823809085',
        '-10.8544921875/ 59.478568831926',
        '9.61795 19.33163'
    ]
}
df = pd.DataFrame(data)

# 用正则拆分location列,只拆分一次保证分成两列
df[['Long', 'Lat']] = df['location'].str.split(r'[-\s/]+', n=1, expand=True)

# 查看结果
print(df[['Long', 'Lat']])

运行结果

Long                  Lat
0  -10.8544921875  -49.8238090851324
1   2.021484375   -59.478568831926
2   2.021484375    49.823809085
3  -10.8544921875   59.478568831926
4        9.61795          19.33163

完全符合你的期望输出!

补充说明

  • n=1参数是告诉split()只拆分一次,这样就能保证把内容分成经度和纬度两部分,不会因为数值里的负号而多拆分
  • 这个正则已经覆盖了你所有的分隔场景,不管是-、带空格的/还是纯空格都能正确识别

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 16:07:59