본문 바로가기

Code Snippets/Pandas

[Pandas] 여러개의 데이터프레임을 효율적으로 합치는 방법

Pandas로 데이터 전처리를 하다보면 여러개의 데이터프레임을 합쳐야 하는 경우가 굉장히 많다.

 

그냥 빈 데이터프레임을 만든 후, append로 데이터프레임을 계속 키워나가도 되긴 하지만, 이 경우 속도 면에서 엄청난 답답함을 경험하게 된다.

 

주로 아래 구조로 합치는데, 소요시간 및 리소스 측면에서 매우 만족스럽다.

 

# 1단계 : 내가 합칠 데이터프레임들을 담을 list 만들기
dfs = []

# 2단계 : for loop를 통해서 df를 하나씩 만들고, list 안에 담아두기

for i in range (0,100):
	small_df = myfunction(i)
    dfs.append(small_df)

# 또는 
for small_df in 'some_function_that_yields_dataframes():
    dfs.append(small_df)

## 이렇게 하면 dfs = [df1, df2, df3 .. 꼴이 됨]


## 3단계 pd. concat를 통해서 list 안에 있는 df들을 합치기
large_df = pd.concat(dfs, ignore_index=True)


### 완성 형태


small_dfs = []
for small_df in some_function_that_yields_dataframes():
    small_dfs.append(small_df)

large_df = pd.concat(small_dfs, ignore_index=True)

논리 출처 : https://stackoverflow.com/questions/13784192/creating-an-empty-pandas-dataframe-then-filling-it/56746204#56746204