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)