※ DataFrame 합치기
■ merge()
- 두 개의 데이터를 특정 컬럼을 기준으로 합침
- parameter
- on: 통합의 기준이 될 key 변수
- left_on: df1의 key 변수
- right_on: df2의 key 변수
- left_index: {True / False} df1의 인덱스를 key 변수로 사용할 것인지
- right_index: {True / False} df2의 인덱스를 key 변수로 사용할 것인지
- suffixes: 조인 후, 컬럼명이 겹치는 경우 접미사를 지정함
- e.g. suffixes(‘_A’, ‘_B’)인 경우, 컬럼명_A, 컬럼명_B
# 기본 사용법
> pd.merge(df1, df2, on, how = "inner", suffixes) # default가 inner 조인
# 예시
> pd.merge(df1, df2, on="컬럼명", how="outer") # "컬럼명" 기준으로 outer 조인
> pd.merge(df1, df2, on="컬럼명", how="left") # "컬럼명" 기준으로 left 조인
> pd.merge(df1, df2, on="컬럼명", suffixes=('_A', '_B'))
# 두 데이터프레임의 기준 컬럼명이 다를 경우
> pd.merge(df1, df2, left_on = 'df1의 기준컬럼명', right_on = 'df2의 기준컬럼명', how = '결합방법')
# df2의 인덱스를 key로 사용하고 싶을 때
> pd.merge(df1, df2, left_on = 'df1의 기준컬럼명', right_index = True, how = '결합방법')
■ concat()
> pd.concat([df1, df2, …]) # default가 아래로 이어 붙임
> pd.concat([df1, df2, df3])
> pd.concat([df1, df2, df3], axis=1) # 옆으로 이어 붙이기
> pd.concat([List]).reset_index() # 새로운 index를 0부터 생성
> pd.concat([List]).reset_index(drop = True) # 기존에 합쳐진 index 삭제 후, 새로운 index를 0부터 생성
# e.g. 여러 csv파일 하나의 data frame으로 합치기
> merged_df = pd.DataFrame()
> for file in os.listdir('일별오염데이터'):
if '오염_수준' in file:
df = pd.read_csv('일별오염데이터/' + file, sep = '\t')
merged_df = pd.concat([merged_df, df], axis = 0, ignore_index= True)
# e.g. 하나의 xlsx파일에 여러 sheet가 있는 경우 하나로 합치기
> import openpyxl
> wb = openpyxl.load_workbook('A.xlsx')
> sheet_names = wb.sheetnames # e.g. ['1월', '2월', ...]
> merged_df = pd.DataFrame()
> for sn in sheet_names:
data = pd.read_excel('A.xlsx', skiprows=range(6), sheet_name = sn)
data = data.iloc[:, 1:]
merged_df = pd.concat([merged_df, data], axis = 0)
댓글남기기