ValueError: Length of values (652) does not match length of index (654)

SOOYEON·2022년 10월 12일
0

pandas

목록 보기
34/37
ValueError: Length of values (652) does not match length of index (654)

address1 = df["지번주소"].to_list()
latlst = []
longlst = []
for i in range(len(address1)):
    try:
        url = "https://dapi.kakao.com/v2/local/search/address.json?&query=" + df["지번주소"].iloc[i]
        result = requests.get(urlparse(url).geturl(),
                              headers={"Authorization":"KakaoAK "})
        
        json_obj = result.json()

        long = json_obj["documents"][0]["address"]["x"]
        lat = json_obj["documents"][0]["address"]["y"]
        
        longlst.append(long)
        latlst.append(lat)
        

    except:
        pass
    
df['경도'] = longlst
df['위도'] = latlst

카카오 api로 주소의 위도 경도 데이터를 생성하는 코드를 실행시켰을 때 발생

내용을 살펴봤을 때, 수집된 위도 경도의 길이와 입력한 데이터프레임의 길이가 달라서 발생 → 위도 경도 데이터가 추출되지 못한 주소가 있어 실제 담긴 리스트의 길이가 다른 것으로 추측되어 코드를 수정했다.

우선 위도 경도 데이터를 생성하려는 데이터프레임에서 컬럼명으로 임의 지정을 해준다.

df['위도'] = 0
df['경도'] = 0

반복문이 실행될 때마다 리스트에 값을 담지 않고, i값 = 즉 해당 순서와 iloc값의 위도 경도 값을 직접 추가하는 방식으로 변경했다.

df['경도'].iloc[i] = long
df['위도'].iloc[i] = lat
address1 = df["지번주소"].to_list()

for i in range(len(address1)):
    
    try:
        url = "https://dapi.kakao.com/v2/local/search/address.json?&query=" + df["지번주소"].iloc[i]
        result = requests.get(urlparse(url).geturl(),
                              headers={"Authorization":"KakaoAK "})
        
        json_obj = result.json()

        long = json_obj["documents"][0]["address"]["x"]
        lat = json_obj["documents"][0]["address"]["y"] 

        df['경도'].iloc[i] = long
        df['위도'].iloc[i] = lat

    except:
        pass
    

결과

위도 경도의 데이터가 추가된 것을 확인

0개의 댓글