본문 바로가기

ERROR!

pandas.errors.invalidindexerror: reindexing only valid with uniquely valued index objects 문제 해결 방법

pandas.errors.invalidindexerror: reindexing only valid with uniquely valued index objects 문제 해결 방법

 

두 데이터프레임을 concat으로 합칠 때  pandas.errors.invalidindexerror: reindexing only valid with uniquely valued index objects라는 오류가 발생했다. 검색해보면 다들 reset_index()쓰라고 하는데 이것도 안돼서 몇시간 까먹었다ㅜㅜ

 

결국 지피티님의 도움을 받아 해결했는데 결국 중요한 건 데이터 자체인거같다,,,

 

 

해결법

1. 중복된 인덱스 확인

# df_pred와 df_pred_else 
duplicated_indexes_pred = df_pred.index[df_pred.index.duplicated()]
duplicated_indexes_else = df_pred_else.index[df_pred_else.index.duplicated()]

print("df_pred의 중복된 인덱스:", duplicated_indexes_pred)
print("df_pred_else의 중복된 인덱스:", duplicated_indexes_else)

 

위의 코드를 넣었을 때 중복된 인덱스가 있다고 나오면 그거때문에 concat이 안되는거. reset_index()를 사용해서 해결할 수 있다

 

df_pred = df_pred.reset_index(drop=True)
df_pred_else = df_pred_else.reset_index(drop=True)

df_pred_total = pd.concat([df_pred, df_pred_else], ignore_index=True)

 

 

2. 컬럼 확인

두 데이터프레임의 컬럼이 동일하지 않은 경우에도 invalidindexerror: reindexing only valid with uniquely valued index objects라는 오류가 발생하면서 concat이 안된다. 아니 근데 컬럼 문제인데 왜 indexerror가??????????????? 진짜 모름

 

columns로 각 데이터프레임의 컬럼 확인한다.

print("df_pred의 컬럼:", df_pred.columns)
print("df_pred_else의 컬럼:", df_pred_else.columns)

 

나는 똑같은 컬럼이 2번 들어가 있었다.

이거때문에! 이거때문에!!

 

중복 컬럼 제거하고 concat하면 잘 된당...

df_pred_else = df_pred_else.loc[:, ~df_pred_else.columns.duplicated()]
df_pred_total = pd.concat([df_pred, df_pred_else], ignore_index=True)