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
결과
위도 경도의 데이터가 추가된 것을 확인