인프런 커뮤니티 질문&답변

waterlee6님의 프로필 이미지
waterlee6

작성한 질문수

[입문자를 위한] 캐글로 시작하는 머신러닝 • 딥러닝 분석

1.3. 데이터 전처리 강의에서 index do not match 에러가 납니다.

작성

·

278

0

안녕하세요.

데이터 전처리 강의 내용 중 코드를 똑같이 따라쳤는데도 에러가 나는 부분이 있는데요, 구글링을 열심히 해봤는데도 해결하지 못해서 질문 남깁니다.

df_bool = ~df.groupby('hour')['cnt'].apply(is_outliers)
df_out = df[df_bool]

위 코드를 실행하면 Unalignable boolean Series provided as indexer (index of the boolean Series and of the indexed object do not match). 에러가 발생합니다.

 

df_bool.index

위 메서드로 df_bool의 인덱스를 확인해보니 (hour, n) 의 튜플로 된 멀티 인덱스가 나왔습니다.

df의 인덱스는 0, 1, 2, ... , 17413의 숫자로 되어 있어서 조건식으로 넣은 boolean 시리즈(df_bool)의 인덱스와 df의 인덱스가 일치하지 않아서 발생하는 에러로 이해했습니다. 다만 구글링을 아무리 해도 해결방법은 잘 모르겠습니다. 강의 내용을 똑같이 따라 쳤는데 왜 에러가 발생하는 걸까요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

에러 메시지에 따르면 df_bool의 인덱스와 df의 인덱스가 일치하지 않아 발생하는 문제로 보입니다. groupby로 그룹핑된 결과의 인덱스가 멀티 인덱스로 반환되는데, 이를 바로 데이터 프레임에 적용할 경우 일치하지 않는 인덱스로 인해 에러가 발생할 수 있습니다.

인덱스를 동기화하여 문제를 해결하기 위해서는 df_bool의 인덱스를 df의 인덱스와 일치시켜주는 과정이 필요합니다. groupby 후에 apply를 사용하는 경우 결과값의 인덱스가 그룹핑된 인덱스로 구성되기 때문에, 결과값을 원본 데이터프레임과 동일한 인덱스로 재정렬하는 작업이 필요합니다.

reset_index 메서드를 사용하여 멀티 인덱스를 해제하고, 원본 데이터프레임과 동일한 인덱스를 갖도록 조정할 수 있습니다. 아래와 같이 시도해보시기 바랍니다.

df_bool = ~df.groupby('hour')['cnt'].apply(is_outliers).reset_index(drop=True)
df_out = df[df_bool]

reset_index(drop=True)를 사용하여 멀티 인덱스를 제거하고, 원본 데이터프레임인 df의 인덱스와 일치하도록 조정합니다. drop=True 옵션은 기존 인덱스를 새로운 열에 추가하지 않고 삭제합니다.

위 방법을 시도해도 문제가 해결되지 않거나 다른 문제가 발생한다면 강의 내용을 다시 한 번 확인하시거나, 직접 문의해보시는 것도 좋은 방법입니다. 인프런에는 질문하기 기능이 있어 강의 관련 질의응답을 할 수 있습니다. 문제가 해결되지 않을 경우, 인프런의 문의하기 기능을 활용해보세요.

도움이 되셨길 바랍니다. 프로그래밍 학습에 어려움이 있을 때 언제든 질문해 주세요.

waterlee6님의 프로필 이미지
waterlee6

작성한 질문수

질문하기