大数跨境
0
0

用Python讲述:地理“经纬度”数据的4种转换方法!

用Python讲述:地理“经纬度”数据的4种转换方法! 数据分析与统计学之美
2020-11-03
0


关于“度、分、秒”的印象,我还是停留在初、高中的印象,因为那个时候学习过他们之间的数学转换。今天突然被问及,因此我将其整理出来,供大家学习。

在数学中,表示角度的度、分、秒分别使用°、′、″等符号进行表示。度与分,分与秒之间一律采用六十进制,它们的换算关系如下:

1°=60′    1°=3600″    1′=60″

接下来,我们利用群友提供的数据,来完成“度、分、秒”数据转“度”的操作,数据截图如下。

拿到这个需求,我随手就写出来了2种解决办法。但是最终在群友小小明(人称“明佬”)的修改和完善下,最后提供了四种解决办法。

① 方法一:series的apply()函数
import re
import pandas as pd

df = pd.read_csv("t.txt", index_col=0)
df.columns = ["经纬度数据"]
def func(s):
    arr = re.findall("\d+", s)
    return int(arr[0])+int(arr[1])/60+int(arr[2])/3600

df["final"] = df["经纬度数据"].apply(func)
df
② 方法二:series中str属性的split()方法
import re
import pandas as pd

df = pd.read_csv("t.txt", index_col=0)
df.columns = ["经纬度数据"]
tmp = df["经纬度数据"].str.split("°|′|″", expand=True).values[:, :3].astype(int)
df["final"] = tmp[:, 0] + tmp[:, 1]/60 + tmp[:, 2]/3600
df
③ 方法三:series中str属性的extract()方法
import re
import pandas as pd

df = pd.read_csv("t.txt", index_col=0)
df.columns = ["经纬度数据"]
tmp = df["经纬度数据"].str.extract("(\d+)°(\d+)′(\d+)″").values.astype(int)
df["final"] = tmp[:, 0] + tmp[:, 1]/60 + tmp[:, 2]/3600
df
④ 方法四:series中str属性的extractall()方法
import re
import pandas as pd

df = pd.read_csv("t.txt", index_col=0)
df.columns = ["经纬度数据"]
tmp = df["经纬度数据"].str.extractall("(\d+)").unstack().values.astype(int)
df["final"] = tmp[:, 0] + tmp[:, 1]/60 + tmp[:, 2]/3600
df


1. "用户忠诚度" 怎么分析?实际中,我这样做!

2. 原创《MySQL基础查询手册》终于发布了,共四个原创文档!

3. 对比excel,如何在Python中进行“文本自定义”排序?

4. 原创《Python最强基础学习文档》,戳我领取!

5. 原创《Excel数据透视表》大全,戳我领取!

6. 原创《python自动化办公手册》,戳我领取!

【声明】内容源于网络
0
0
数据分析与统计学之美
免费领10w字"Python知识手册",共400页,后台回复“十万”领取!
内容 1080
粉丝 0
数据分析与统计学之美 免费领10w字"Python知识手册",共400页,后台回复“十万”领取!
总阅读326
粉丝0
内容1.1k