실무에서 두 개의 엑셀 데이터를 합쳐서 정리하고 있는데, 합치고 나면 컬럼 이름 뒤에 자꾸 _x, _y가 붙어서 당황스러워요.
코드:
import pandas as pd
df1 = pd.DataFrame({'ID': [1, 2], 'Name': ['A', 'B'], 'City': ['Seoul', 'Busan']})
df2 = pd.DataFrame({'ID': [1, 2], 'Name': ['A', 'B'], 'Age': [20, 30]})
result = pd.merge(df1, df2, on='ID')
print(result)
오류: ID Name_x City Name_y Age
0 1 A Seoul A 20
1 2 B Busan B 30
시도: on='ID'라고 지정해서 합쳤는데도 Name 컬럼이 두 개로 나뉘어서 나와요. 구글에 검색해봤는데 suffixes라는 말이 나오는데 어떻게 쓰는지 모르겠어요.
질문: 중복되는 Name 컬럼이 하나만 남게 하거나 _x, _y가 안 붙게 하려면 어떻게 해야 하나요?
댓글13
-
빗방울
2026.10.31 09:34
-
빗방울
2026.10.31 11:29
맞음ㅋㅋ
이게 젤 깔끔한 방법인듯요
그냥 리스트로 묶어서 다 넣어버리셈ㅋㅋ
-
빗방울
2026.10.31 21:45
ㄹㅇ 이게 젤 정석인 듯요ㅋㅋ
그냥 겹치는 거 다 on에 때려 넣는 게 젤 속 편함ㄷㄷ
-
빗방울
2026.10.31 10:29
만약에 Name 데이터가 서로 달라서 하나만 남겨야 하는 거면
merge 하고 나서 drop으로 _y 컬럼만 날려버리는 게 젤 편함요ㅋㅋ
-
빗방울
2026.10.31 10:37
아니면 merge 하기 전에 df2에서 Name 컬럼만 미리 drop 하고 합치는 것도 방법임ㅋㅋ 그게 정신건강에 좋음요
-
빗방울
2026.10.31 12:42
suffixes=('', '_drop') 이렇게 주고 나중에 _drop 들어간 것만 필터링해서 지우는 방법도 있음ㅋㅋ
이거 은근히 헷갈리는 부분인듯요 ㄷㄷ
-
빗방울
2026.10.31 15:33
오 이거 꿀팁이네요ㅋㅋ
저도 나중에 컬럼 많아지면
그냥 이렇게 필터링해서 지우는 게 젤 편할듯요ㄷㄷ
-
빗방울
2026.10.31 13:13
아니면 걍 set_index로 ID 잡고 join 쓰는 것도 방법일듯ㅋㅋ
이게 생각보다 손에 안 익어서 헷갈리네요ㄷㄷ
한번 찾아보셈요ㅋㅋ
-
빗방울
2026.10.31 19:55
맞음ㅋㅋ join 쓰면 인덱스 기준으로 합쳐져서 더 편할 때가 있더라고요ㄷㄷ
근데 이건 인덱스 설정부터 다시 해야 해서 좀 번거롭긴 함ㅋㅋ
-
빗방울
2026.10.31 14:55
아니면 그냥 merge 하고 나서 rename으로 이름 싹 바꿔주는 게
나중에 관리하기 편하더라고요ㅋㅋ 저도 처음에 이거 때문에
한참 헤맸는데 익숙해지면 껌임ㄷㄷ
-
빗방울
2026.10.31 16:00
근데 그냥 merge 하기 전에 df2 = df2[['ID', 'Age']] 이렇게 필요한 컬럼만 슬라이싱해서 합치는 게 제일 직관적이고 편한 것 같음ㅋㅋ 저도 보통 이렇게 함요ㄷㄷ
-
빗방울
2026.10.31 17:58
ㄹㅇ 이게 정답임ㅋㅋ
처음부터 필요한 것만 딱 골라서 합치는 게 나중에 헷갈릴 일도 없고 젤 깔끔한 듯요ㄷㄷ
-
빗방울
2026.10.31 17:25
와 댓글들 진짜 친절하네요ㅋㅋ
내 생각엔 그냥 겹치는 컬럼 다 쳐내고 합치는 게 젤 속 편할 듯요ㄷㄷ
파이팅하셈요ㅋㅋ
모든 이야기1502
가벼운 안부부터 깊은 생각까지, 함께 나눠요.
on에 ['ID', 'Name'] 이렇게 리스트로 넣으시면 해결될듯요ㅋㅋ
중복되는 거 다 지정해주면 _x, _y 안 붙음요