Just Fighting

세 개 이상의 데이터 프레임 합치기(reduce) 본문

Python

세 개 이상의 데이터 프레임 합치기(reduce)

yennle 2022. 5. 4. 14:40
728x90

세 개 이상의 데이터 프레임을 합치기 위해 검색을 해봤더니

reduce함수를 사용해야 한다고 해서 찾아보고 연습해보았다.

 

https://docs.python.org/3/library/functools.html?highlight=reduce#functools.reduce 

 

functools — Higher-order functions and operations on callable objects — Python 3.10.4 documentation

functools — Higher-order functions and operations on callable objects Source code: Lib/functools.py The functools module is for higher-order functions: functions that act on or return other functions. In general, any callable object can be treated as a f

docs.python.org

 

 

reduce함수는 어떤 함수를 누적해서 사용할 때 사용한다.

위에 문서에 있는 예시를 이용해 연습해보았다.

1부터 5까지의 수를 더하는 예시이다.

reduce함수 안에 사용할 함수와 누적해서 사용할 데이터를 넣어주면 된다.

((((1+2)+3)+4)+5) 이러한 방식으로 함수를 적용하게 된다.

from functools import reduce

temp = [1,2,3,4,5]
reduce(lambda x, y: x+y,temp)

 

 

이것을 데이터 프레임 합치는 것에 적용해보았다.

데이터 프레임 3개를 임의로 만들어서 연습했다.

3개의 데이터 프레임이 공통으로 가진 'id'를 기준으로 merge했다.

data1 = pd.DataFrame({'id':[1,2,3], 'korean':[98,24,95]})
data2 = pd.DataFrame({'id':[1,2,3], 'math':[54,84,20]})
data3 = pd.DataFrame({'id':[1,2,3], 'english':[85,22,48]})

data_list = [data1, data2, data3]
reduce(lambda x, y : pd.merge(x,y,on='id'), data_list)

 

원하는 모양대로 데이터가 잘 합쳐진 것을 확인할 수 있었다!!

 

728x90
Comments