제로베이스 데이터 취업 스쿨 4주차 스터디노트 2호
판다스쉑... 이런 삽질을 시키다니
# 문제의 코드
for idx, row in df.iterrows():
selected = api_data[idx]
row["lat"], row["lng"] = get_coordinates(selected)
row["test"] = get_address(selected)
lat, lng column은 정상적으로 값이 들어가고,
test에는 값이 들어가지 않는 것을 볼 수 있다.
공식문서 링크
"You should never modify something you are iterating over. This is not guaranteed to work in all cases. Depending on the data types, the iterator returns a copy and not a view, and writing to it will have no effect."
for idx, row in df.iterrows():
selected = api_data[idx]
df.loc[idx, "lat"], df.loc[idx, "lng"] = get_coordinates(selected)
df.loc[idx, "test"] = get_address(selected)
썩 마음에 드는 해결책은 아니다.
iterating 항목에 대해 변경을 하는 것이 아닌,
iterating 대상 데이터를 가져와서 수정을 가해야 하기 때문에,
음... 뭐랄까 관리 scope가 확장되는 기분?
함수 작성 시 side effect가 나지 않을까? 하는 추상적인 기분...
암튼 새로 하나 배웠다.ㅎㅎ