반응형

08-01. 함수를 이용한 열 단위 결합 (combine)

DataFrame.combine(other, func, fill_value=None, overwrite=True)

 

개요


combine 메서드는 두 pandas 객체를 func함수를 이용하여 결합하는 메서드입니다.

 

사용법


기본 사용법
self.combine(other, func, fill_value=None, overwrite=True) 

other : 결합 할 DataFrame객체 입니다.
func : 결합에 이용할 함수 입니다.
fill_value : 결합하기전 Na의 값을 이 값으로 대체합니다.
overwrite : other에 존재하지 않는 self의 열의 값을 NaN으로 대체합니다.

반응형

 

예시


먼저 np.NaN이 포함된 간단한 3x3짜리 데이터 2개를 만들어보겠습니다.

n=np.NaN
col = ['col1','col2','col3']
row = ['row1','row2','row3']
data1 = [[1,3,4],
         [n,8,2],
         [2,6,7]]
data2 = [[7,2,3],
         [2,4,2],
         [3,1,5]]
df1 = pd.DataFrame(data1,row,col)
df2 = pd.DataFrame(data2,row,col)
print(df1)
>>
      col1  col2  col3
row1   1.0     3     4
row2   NaN     8     2
row3   2.0     6     7
print(df2)
>>
      col1  col2  col3
row1     7     2     3
row2     2     4     2
row3     3     1     5

기본적인 사용법
func 인수에 np.maximum을 입력하여 df1과 df2의 요소를 비교, 큰 값으로 결합하여 보겠습니다.

print(df1.combine(df2,np.maximum))
>>
      col1  col2  col3
row1   7.0     3     4
row2   NaN     8     2
row3   3.0     6     7

두 DataFrame 객체의 각 요소중 큰 값들로만 이루어진 것을 확인할 수 있습니다.

fill_value를 이용하여 결측치 채우기
fill_value에 값을 입력하면, 결측치가 해당 값으로 채워진 후 결합이 진행됩니다.

print(df1.combine(df2,np.maximum,fill_value=9))
>>
      col1  col2  col3
row1   7.0     3     4
row2   9.0     8     2
row3   3.0     6     7

col1row2의 값이 NaN에서 9로 변경 된후 np.maximum이 진행된 것을 확인할 수 있습니다.

overwrite 인수의 사용
overwrite인수는 other에 존재하지 않는 self의 열의 요소를 NaN으로 변경하는 메서드입니다.
먼저 이해를 돕기 위해 2x2 데이터인 df3을 만들어 보겠습니다.

col3 = ['col1','col2']
row3 = ['row1','row2']
data3 = [[1,2],
         [3,4]]
df3 = pd.DataFrame(data3, row3, col3)
print(df3)
>>
      col1  col2
row1     1     2
row2     3     4


overwrite가 False일 경우 존재하지 않는 열에 대해서는 기존값으로 채워집니다.

print(df1.combine(df3, np.maximum,overwrite=False))
>>
      col1  col2  col3
row1   1.0   3.0     4
row2   NaN   8.0     2
row3   NaN   NaN     7

overwrite가 True일 경우 존재하지 않는 열에 대해서는 NaN으로 채워집니다.
col3의 값이 모두 NaN으로 채워진 것을 확인할 수 있습니다.

print(df1.combine(df3, np.maximum,overwrite=True))
>>
      col1  col2  col3
row1   1.0   3.0   NaN
row2   NaN   8.0   NaN
row3   NaN   NaN   NaN
반응형

+ 최근 글