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
col1, row2의 값이 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
'파이썬완전정복-Pandas DataFrame > 08. 결합' 카테고리의 다른 글
Pandas DataFrame 08-06. 업데이트 (update) (0) | 2022.01.23 |
---|---|
Pandas DataFrame 08-05. 객체 병합_결측제어 가능 (align) (0) | 2022.01.23 |
Pandas DataFrame 08-04. 객체병합 (merge) (0) | 2022.01.23 |
Pandas DataFrame 08-03. 인덱스기준 병합 (join) (0) | 2022.01.23 |
Pandas DataFrame 08-02. 다른 객체로 결측치 덮어쓰기 (combine_first) (0) | 2022.01.23 |