2017-10-18 33 views
1

J'ai nombre de latitude/longitude, comme: -4726786457893145Problèmes avec séparateur décimal

mais je besoin d'un séparateur décimal, comme: -47,26786457893145

J'ai essayé « format » ou « pour » structures mais sans succès. Je me suis même converti en liste, puis j'ai inséré un point puis je me suis converti pour flotter à nouveau, mais je n'ai pas travaillé pour tous les nombres et je ne sais pas pourquoi. J'apprécierais votre aide. Merci.

Voici mon code partiel:

latitude = [] 
longitude = [] 
for i in range(len(data['Latitude'])): 
    a = list(str(data['Latitude'][i].replace(',',''))) 
    a.insert(3,'.') 
    str1 = ''.join(a) 
    latitude.append(float(str1)) 

    a = list(str(data['Longitude'][i].replace(',',''))) 
    a.insert(3,'.') 
    str1 = ''.join(a) 
    longitude.append(float(str1)) 
+1

sont tous les numéros de la même longueur? Vous avez -4726786457893145 -> -47.26786457893145, à quoi ressemblerait le numéro 3.26786457893145 (par exemple) dans le format original? –

+0

oui, ils ont la même longueur parce qu'ils sont dans un endroit particulier où les coordonnées ont le format -xx.xxxxxxxx. C'est-à-dire que tous les nombres ont besoin d'un séparateur décimal en 3 positions. @Nuclear_Wizard –

+0

Le problème est de savoir comment insérer un 'point' dans cette position. –

Répondre

0

Cette fonction fait que je ... ce qui pourrait être écrit plus clairement .. . tournera -4726786457893145 en -47.26786457893145.

def decimal_add(n): 
    if n < 0: 
     sign = -1 
     int_part = float(str(n)[1:3]) 
     decimal_part = float(str(n)[3:])/10**(len(str(n))-3) 


    else: 
     sign = 1 
     int_part = float(str(n)[0:2]) 
     decimal_part = float(str(n)[2:])/10**(len(str(n))-2) 
    number = (int_part+decimal_part) * sign 
    return number 

Exemples de portable jupyter:

enter image description here

+0

Merci Davis. ça a beaucoup aidé! Cordialement. –

+0

De rien! Je suis content que vous ayez trouvé mon message utile. –

0

On dirait que vous supprimez , et que d'essayer d'insérer . dans la position fixe. Il devrait être plus correct de simplement remplacer un à l'autre avec .replace(',','.') Que votre extrait regardera cette façon (avec une certaine simplification):

latitude = [lat.replace(',','.') for lat in data['Latitude']] 
longitude = [lon.replace(',','.') for lon in data['Longitude']] 
+0

Thaks pour votre contribution Timofey. –