2017-10-18 78 views
1

我已經經/緯度的數字,如:-4726786457893145用小數點分隔問題

,但我需要一個小數點分隔符,如:-47.26786457893145

我已經試過「格式」或「對」結構但沒有成功。我甚至轉換爲列表,然後插入一個點,然後再次轉換爲浮點數,但不適用於所有數字,我不知道爲什麼。 我會感謝您的幫助。謝謝。

這裏是我的部分代碼:

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

是否所有的號碼相同的長度?你有-42626786457893145 - > -47.26786457893145,例如3.26786457893145(例如)在原始格式中看起來像什麼? –

+0

是的,它們具有相同的長度,因爲它們位於座標爲-xx.xxxxxxxx格式的特定位置。也就是說,所有的數字都需要3位小數分隔符。 @Nuclear_Wizard –

+0

問題是如何在這個位置插入一個'點'的最佳方式。 –

回答

0

這個功能,我做了......這能更清楚地寫..將-47226786457893145變成-47.26786457893145。從jupyter筆記本

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 

例子:

enter image description here

+0

謝謝戴維斯。它幫助了很多!問候。 –

+0

不客氣!我很高興你發現我的帖子很有幫助。 –

0

看起來要刪除,,比試圖插入.到固定位置。它應該是更正確的只需更換一個到另一個.replace(',','.') 比你的片段將這個樣子(有一些簡化):

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

Thaks爲你貢獻Timofey。 –