Cuatro métodos de conversión para analizar datos geográficos de "latitud y longitud" con Python

Prefacio

El texto y las imágenes de este artículo son de Internet y son únicamente con fines de aprendizaje y comunicación. No tienen ningún uso comercial. Si tiene alguna pregunta, comuníquese con nosotros para su procesamiento.

PD: Si necesita materiales de aprendizaje de Python, puede hacer clic en el enlace de abajo para obtenerlo usted mismo.

Materiales de aprendizaje gratuitos de Python y respuestas de comunicación grupal Haga clic para unirse


Con respecto a la impresión de "grados, minutos y segundos" , todavía me quedo en la impresión de secundaria y preparatoria, porque aprendí la conversión matemática entre ellos en ese momento. Hoy me preguntaron sobre eso de repente, así que lo resolví para que todos lo aprendieran.

En matemáticas, los grados, minutos y segundos que representan ángulos están representados por símbolos como °, ′, ” . Grados y minutos, minutos y segundos están todos en el sistema de seis decimales, y su relación de conversión es la siguiente:
1 ° = 60 ′ 1 ° = 3600 ″ 1 ′ = 60 ″
A continuación, usamos los datos proporcionados por los amigos del grupo para completar la conversión de los datos de "grados, minutos y segundos" a "grados". La captura de pantalla de los datos es la siguiente :


Finalmente, se proporcionan cuatro soluciones:
① Método 1: aplicar () función de serie

 

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

② Método 2: método split () del atributo str en serie

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

③ Método 3: método extract () del atributo str en serie

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

④ Método 4: método extractall () del atributo str en serie

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

Supongo que te gusta

Origin blog.csdn.net/pythonxuexi123/article/details/112791758
Recomendado
Clasificación