re.compile 및 findall keyerror : 0 질문드립니다.

조회수 950회

이미지

질문내용

배경

1) 그림의 dataframe df_movies2에서 title만 뽑아온다 ==moviedata
2) moviedata에서 (숫자4자리) 형식의 값만 뜯어온다.
3) 해당 값을 리스트형식으로 저장하고 싶다.

error 발생

1) test=p.findall(moviedata[0])에서 에러가 발생합니다.
2) 에러 key error:0
3) 예상 : moviedata[0]에서의 0이 key값으로 문제가 발생한것 같습니다.

질의내용

1) 안될거면 첫번째 것도 안되야 하는데 첫번째 는 1995를 잘 뽑아냈습니다.
2) 더욱이 print(moviedata)를 해주면 데이터 결손없이 잘뽑혀나옵니다. 하단 이미지 참조바람
3) 뭐가 문제일까요 ㅠㅠ 이미지

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    답변 다시 답니다. 코드를 좀 잘못보고, 틀린 답변을 달았었습니다.

    moviedatadf_movie 에서 타이틀이 특정 조건인 row 들만 select 하고, 그 중에서 'title' 컬럼만 가져온 pd.Series 입니다.

    그런데, 이 moviedata 는 그냥 리스트가 아니라, pd.Series 라서 인덱스를 갖을 수 있어요. 프린트해 본 결과를 보면, 기존 데이터프레임에서의 인덱스값을 그대로 가지고 있는 걸 볼 수 있고요.

    moviedata[idx]moviedata 중에서 첫번째 것을 가져오라는 것이 아니고, moviedata 데이터 중에서 인덱스가 idx 와 같은 것을 찾아오라는 뜻이 됩니다.

    첫번째 루프에서는 moviedata 가 인덱스가 0인 데이터가 있기 때문에, moviedata[0] 이 성공합니다.

    하지만, 그 다음부터는 인덱스가 0인 데이터가 없기 때문에 moviedata[0] 에서 keyerror 가 발생하는 것입니다.

    의도한 것처럼 추려진 것들 중에서 첫번째 것을 가져오려면, moviedata.iloc[0] 으로 고쳐야 할 것입니다.

    개념이 헷갈리는데, 판다스 문서를 한번 읽어보세요.

    https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html

    • iloc로 하니 정상적으로 년도데이터만 가져오네요 감사합니다!! pd.Series를 다시 살펴봐야 겠네요, 공부하면 화질높아짐 2020.4.2 09:28
    • @wjsxkxk1 제가 달아놓은 링크의 공식 문서 잘 읽어보세요. nowp 2020.4.2 12:00
    • @daewon loc는 라벨로 찾는거고 iloc는 인덱스 위치 숫자로 찾는거네요 감사합니다 공부하면 화질높아짐 2020.4.3 09:44

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)