파이썬 판다스에서는 특정 행이나 열을 선택할 때 사용하는 방법으로 loc과 iloc이 있다.
loc은 열의 label로 인덱싱하는 방법이다. 그러니까 쉽게 말해서 열의 label이 매출액이라면 loc['매출액'] 으로 작성하면 된다.
iloc은 숫자로 인덱싱하는 방법이다. 내가 주로 사용했던 방식이라서 나는 iloc이 loc보다 더 익숙했다.
loc과 iloc 차이점에 대해서 상세하게 설명해놓은 블로그가 있어서 이 글을 보고 이해했다. 설명을 되게 잘하셔서 이해하기가 쉬웠다.
과제를 풀면서 iloc을 이용해서 데이터 프레임 전체 데이터 중에서 한 행만 빼놓고 데이터를 다 수정하려고 했었다. 근데 아무리 머리를 굴려서 코드를 짜고 실행을 시켜도 에러에서 막히거나 에러가 안나도 데이터가 안바뀌는 바람에 완전 좌절했었다.
그래서 구글링을 더 열심히 했다. 사실 아직 질문 자체가 익숙하지도 않아서 혼자 해결하려고 열심히 구글링했다. 그래도 부트캠프를 계속 진행하다 보면 질문에 익숙해지는 날이 오지 않을까...😇😇
수업시간에 코치님이 lambda에 대해서 지나가듯이 말하신 걸 내가 이렇게 메모해놨었다.
사실 lambda도 js의 익명함수와 비슷해서 나한테 좀 익숙하게 느껴졌다!
그래서 lambda를 찾아보게 됐고, 결론은 iloc에 이어서 lambda로도 해결 못했다.
df['매출액'] = df['매출액'].apply(lambda x: x.replace(',',''))
# x에는 df['매출액']의 값이 넘어감
lambda는 위와 같은 방법으로 사용하면 된다. 근데 저렇게 간단한 경우에는 axis를 안붙여도 에러 없이 실행이 되는데 내가 대체 코드를 어떻게 짰던건지 내가 짠 코드는 apply안에 lambda를 작성하는 코드였다. lambda에 axis=1을 안 쓰니까 계속 KeyError가 났었다. 그러다가 axis=1 을 붙였더니 실행이 되더라...굉장히 간단한 거라서 조금 허무하긴 했다.
저걸 안붙여서 에러가 난 코드를 하필 캡쳐를 안해놔서 어떤 코드인지 올릴 수는 없지만, 대신 에러났을 때 참고했던 StackOverflow 링크를 갖고 있다.
이런건 진짜 잘 저장해놓는 나.. 칭찬해
결국 오늘 열심히 찾아본 loc도 iloc도 lambda로도 과제 해결은 못했지만 다른 방법을 찾아보니까 생각보다 더 간단한 문제였다. 내가 문제를 좀 어렵게 풀려고 하는 경향이 있는건가 아니면 아직 파이썬을 너무 못해서 그런걸까🙄
어쨌든 주말에 목표했던 다 못풀었던 과제 풀기 + 풀 수 있는 도전과제 풀기를 완료해서 기분은 좋다 !!! 이제 아직 다 못채운 TIL 빈칸을 채우러 가야겠다,,🔥