問題

2017-10-18 3 views
1

Iたような緯度/経度番号:-4726786457893145問題

は、私は次のように、小数点を必要とする:-47.26786457893145

Iは構造「の」「フォーマット」又は試みましたしかし成功なし。私はリストに変換してから、ドットを挿入して再び浮動小数点に変換しますが、すべての数値では動作しません。理由はわかりません。 私はあなたの助けに感謝します。ありがとう。

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

すべての数字が同じ長さ? -4726786457893145 - > -47.26786457893145の場合、3.26786457893145という数字は、元の形式のように見えますか? –

+0

はい、座標は-xx.xxxxxxxx形式の特定の場所にあるため、同じ長さになります。つまり、すべての数値に3桁の小数点記号が必要です。 @ Nuclear_Wizard –

+0

問題は、この位置に「ドット」を挿入する最良の方法がどのようなものかということです。 –

答えて

0

私が作った...もっと明確に書くことができた。この機能.. 。-4726786457893145を-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

ありがとう、Davis。それは多くの助けになりました!敬具。 –

+0

あなたは大歓迎です!私のポストが助けになってくれてうれしいです。 –

0

あなたは,を削除しているように見えますし、固定位置に.を挿入しようとするよりも:

は、ここに私の部分のコードです。ちょうどあなたのスニペットは、(いくつかの単純化して)、このようになりますたより.replace(',','.') で別のものを置き換えるために、より正確でなければなりません:

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

あなたの貢献TimofeyのためのThaks。 –