👇👇关注后回复 “进群” ,拉你进程序员交流群👇👇
作者丨黄伟呢
来源丨数据分析与统计学之美
关于“度、分、秒”的印象,我还是停留在初、高中的印象,因为那个时候学习过他们之间的数学转换。今天突然被问及,因此我将其整理出来,供大家学习。

在数学中,表示角度的度、分、秒分别使用°、′、″等符号进行表示。度与分,分与秒之间一律采用六十进制,它们的换算关系如下:
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
-End-
最近有一些小伙伴,让我帮忙找一些 面试题 资料,于是我翻遍了收藏的 5T 资料后,汇总整理出来,可以说是程序员面试必备!所有资料都整理到网盘了,欢迎下载!

在看点这里
好文分享给更多人↓↓