문제

2017-10-18 1 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

모든 숫자가 같은 길이 있습니까? 귀하는 -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

고마워요. 데이비스. 그것은 많은 도움이되었습니다! 문안 인사. –

+0

여러분을 환영합니다! 내 게시물이 도움이 되었기 때문에 기쁩니다. –

0

당신이 ,을 삭제하는 것 같은데 및 고정 위치에 .를 삽입하는 것보다 :

여기 내 일부 코드입니다. 당신의 코드 조각 (일부 단순화와) 이런 식으로 보이는 것보다 .replace(',','.') 와 다른 하나를 대체하는 것이 더 정확합니다

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

당신의 공헌을위한 탁신 Timofey. –