두 개 이상의 DataFrame을 합쳐 하나의 DataFrame으로 만드는 것
| 종류 | 세부 | 기능 |
|---|---|---|
| 수직 결합 | 단순 결합 | - 여러 개의 DataFrame들을 같은 컬럼끼리 수평으로 합침 - 하나의 데이터를 나눈 것을 다시 합칠 때 적용 |
| 수평 결합 | 단순 결합 | - 연관성 있는 여러 데이터를 하나로 합쳐서 조회하는 처리 방식 - 합치려는 DataFrame들의 index나 특정 컬럼의 값이 같은 행끼리 합침 |
| JOIN | - 연관성 있는 여러 데이터를 하나로 합쳐서 조회하는 처리 방식 - 합치려는 DataFrame들의 index나 특정 컬럼의 값이 같은 행끼리 합침 |
glob 모듈 이용
* : 파일 명에 사용, 0개 이상의 모든 문자들** : 디렉토리 경로에 사용, 모든 하위 디렉토리glob(pathname_패턴), glob(pathname_패턴, recursive=True) from glob import glob # 모듈 실행
glob("data/*.csv") # data 디렉토리 내 모든 csv 파일 찾기
glob("data/s*.csv") # data 디렉토리 내에서 s로 시작하는 모든 csv 파일 찾기
glob('./**/*.csv', recursive=True) # 현재 디렉토리부터 모든 하위 디렉토리까지 검색하여 csv 파일 찾기
| 종류 | 방식 |
|---|---|
| 수직 결합 | - 행이 늘어나도록 합침 - 컬럼명이 같은 열끼리 합침 - 같은 column명이 없는 열들도 결과 DataFrame에 들어감 |
| 수평 결합 | - 열이 늘어나도록 합침 - index명이 같은 행끼리 합침 - 같은 index명이 없는 열들도 결과 DataFrame에 들어감 |
pd.concat(objs, [, key=리스트]), axis=0, join='outer'
objs 합칠 DataFrame들을 리스트로 전달keys=[] 합친 행들을 구분하기 위한 다중 인덱스 처리axisjoindataframe객체.join(others, how='left', lsuffix='', rsuffix='')
lsuffix, rsuffix : 같은 컬럼명이 있으면 붙일 접미어 지정 (합치는 DataFrame 간 같은 이름의 컬럼이 있으면 exception 발생함)how : 조인 방식 지정, left, right, outer, inner 중 사용, 기본값 leftdataframe.merge(합칠dataframe, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False)
how를 이용해 변경 가능on : 같은 컬럼명이 여러 개일 때 join 대상 컬럼 선택right_on, left_on: join할 때 하나로 합칠 각 DataFrame의 컬럼명 이름 # a의 name 컬럼과 b의 name 컬럼의 값이 같은 행끼리 join
a.merge(b, left_on="name", right_on="name"left_index, right_index: 조인 할때 index를 사용할 경우 True로 지정how : 조인 방식. 'left', 'right', 'outer', 'inner'. 기본: innersuffixes: 두 DataFrame에 같은 이름의 컬럼명이 있을 경우 구분을 위해 붙인 접미어를 리스트로 설정, 생략시 x, y를 붙인다.