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 답변
-
답변 다시 답니다. 코드를 좀 잘못보고, 틀린 답변을 달았었습니다.
moviedata
는df_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
댓글 입력