작성
·
158
1
선생님 강의 정말 재밌게 잘 보고 있습니다!
concat을 이용해서 데이터 합치는 연습을 혼자서 해보고 있었는데
영상 속에서는 pd. concat([df1, df2])이런식으로 하면
알아서 인덱스도 1부터 매겨지고, 연도도 오름차순으로 정렬이 되었는데요
저는 혼자 따로해보니 연도가 들쑥 날쑥하고 인덱스 번호도 들쑥 날쑥합니다..
왜그런가 이것 저것 살펴보니
저는 pd.concat([df2, df1])처럼 순서를 앞뒤 바꾸어놨었네요
근데 이 순서에 따라 어떻게 결과값이 달라지는지 궁금해서 질문 올립니다!
답변 1
0
안녕하세요.
concat 의 기본값은 axis=0 으로 같은 컬럼의 이름끼리 행을 위아래로 붙입니다.
반대로 axis=1 이라면 인덱스값을 기준으로 컬럼을 옆으로 붙입니다.
이 때, 일관되게 값이 병합되게 하려면 기준이 되는 컬럼이나 인덱스 값이 같아야 합니다.
예를 들어 axis=0 으로 행끼리 붙여준다면 컬럼명이 같은 데이터를 행으로 붙여줍니다.
이때 컬럼명에 오타나 띄어쓰기 등으로 컬럼명이 약간이라도 다르다면 같은 컬럼으로 붙지 않습니다.
"컬럼 1", "컬럼1" 이 두 개의 컬럼은 같은 이름으로 보이지만 앞에 컬럼은 띄어쓰기가 들어 있기 때문에 다른 컬럼으로 인식하고 두 개의 컬럼을 생성하게 됩니다.
하지만 "컬럼1", "컬럼1" 과 같이 컬럼에 띄어쓰기나 눈에 보이지 않는 공백 등이 없다면 같은 컬럼에 데이터가 병합되게 됩니다.
아래 링크는 판다스 공식문서인데 concat 의 여러 예시가 있으니 꼭 참고해 보는 것을 추천합니다.
[Merge, join, concatenate and compare — pandas 1.3.4 documentation](https://pandas.pydata.org/docs/user_guide/merging.html)