[FIXED] Konvertieren Sie Breiten- und Längengrad in Float

Ausgabe

Ich habe einen Datenrahmen df wie diese 3 ersten Zeilen sind diese

Stadt Längengrad Breite
Toluca W099.6569 N19.2925
Pune E73.8562 N18.5167
Blütenbrunnen E026.216667 S29.116667

Zum Beispiel sollte die Bloemfontain-Reihe am Ende so aussehen

Stadt Längengrad Breite
Blütenbrunnen -29.116667 26.216667

Ich habe diesen Code verwendet

pattern = r'(?P<d>[\d\.]+).*?(?P<m>[\d\.]+).*?(?P<s>[\d\.]+)'
dms = df['Latitude'].str.extract(pattern).astype(float)
df['LATITUDE'] = dms['d'] + dms['m'].div(60) + dms['s'].div(3600)
dms = df['Longitude'].str.extract(pattern).astype(float)
df['LONGITUDE'] = dms['d'] + dms['m'].div(60) + dms['s'].div(3600)

habe aber nicht den richtigen Längen- und Breitengrad

Lösung

Ich sehe nicht, wo es überhaupt notwendig ist, eine Mustersuche zu verwenden. So würde ich die Aufgabe lösen.

# function to perform the partitioning
def cnvrtCoord(val: str) -> float:
    sgn = +1
    if val[0] == 'S' or val[0] == 'W':
        sgn = -1
    return float(val[1:]) * sgn  

Um dann den Inhalt der Längengrad- und Breitengradspalten zu ändern, verwenden Sie:

df['Longitude'] = [cnvrtCoord(x) for x in df['Longitude'].tolist()]
df['Latitude'] = [cnvrtCoord(x) for x in df['Latitude'].tolist()]  

Dies würde den unten gezeigten Datenrahmen bei Ihrem Eingabebeispiel erzeugen:

    City    Longitude   Latitude
0   Toluca  -99.656900  19.292500
1   Pune    73.856200   18.516700
2   Bloemfontain    26.216667   -29.116667


Beantwortet von –
itprorh66


Antwort geprüft von –
Dawn Plyler (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like