关于python数据的纬度_奇妙问题集 # 地理“经纬度”数据的4种 Python 转换方法!...

作者:黄

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值