반응형
데이터 접합 방향 설정 및 그룹이름 지정 (keys)¶
연결하는 2개의 데이터프레임의 구조가 다른 경우 연결 시 정보가 없는 부분을 NaN으로 처리합니다.
In [239]:
df1 = pd.DataFrame(np.arange(0,10).reshape(2,5), columns=['c1', 'c2', 'c3', 'c4', 'c5'])
df1
Out[239]:
c1 c2 c3 c4 c5 0 0 1 2 3 4 1 5 6 7 8 9
In [238]:
df2 = pd.DataFrame(np.arange(10,20).reshape(5,2), columns = ['c1', 'c6'])
df2
Out[238]:
c1 c6 0 10 11 1 12 13 2 14 15 3 16 17 4 18 19
In [258]:
pd.concat([df1, df2], keys=['df1', 'df2'])
Out[258]:
c1 c2 c3 c4 c5 c6 df1 0 0 1.0 2.0 3.0 4.0 NaN 1 5 6.0 7.0 8.0 9.0 NaN df2 0 10 NaN NaN NaN NaN 11.0 1 12 NaN NaN NaN NaN 13.0 2 14 NaN NaN NaN NaN 15.0 3 16 NaN NaN NaN NaN 17.0 4 18 NaN NaN NaN NaN 19.0
2개의 데이터프레임의 컬럼구조가 다르기 때문에 연결 시 정보가 없는 영역에 대한 값이 NaN으로 표시됩니다. 그리고 두 개의 데이터프레임은 가장왼쪽의 key로 정한 이름으로 분리되어 표시되었습니다
NaN으로 표시된 정보는 데이터프레임의 .fillna(), .ffill(), .bfill() 함수를 이용하여 결측치를 보강할 수 있습니다. 'df2'로 표시된 데이터프레임의 NaN값이 'df1'데이터 프레임의 정보로 업데이트 되었습니다.
In [261]:
pd.concat([df1, df2], keys=['df1', 'df2']).ffill()
Out[261]:
c1 c2 c3 c4 c5 c6 df1 0 0 1.0 2.0 3.0 4.0 NaN 1 5 6.0 7.0 8.0 9.0 NaN df2 0 10 6.0 7.0 8.0 9.0 11.0 1 12 6.0 7.0 8.0 9.0 13.0 2 14 6.0 7.0 8.0 9.0 15.0 3 16 6.0 7.0 8.0 9.0 17.0 4 18 6.0 7.0 8.0 9.0 19.0
데이터프레임을 컬럼을 추가하는 방향으로 연결하는 경우 'axis = 1' 값을 사용합니다.
In [263]:
pd.concat([df1, df2], keys=['df1', 'df2'], axis = 1)
Out[263]:
df1 df2 c1 c2 c3 c4 c5 c1 c6 0 0.0 1.0 2.0 3.0 4.0 10 11 1 5.0 6.0 7.0 8.0 9.0 12 13 2 NaN NaN NaN NaN NaN 14 15 3 NaN NaN NaN NaN NaN 16 17 4 NaN NaN NaN NaN NaN 18 19
'axis = 1'을 사용하여 df2 데이터프레임이 컬럼을 늘리는 방향으로 연결되었습니다. key값도 각 데이터프레임이 시작하는 컬럼 위에 출력되었습니다.
반응형
'Programming > Pandas' 카테고리의 다른 글
[Pandas] Text파일의 데이터 읽기 (0) | 2022.12.20 |
---|---|
[Pandas] 데이터 결합/병합 .merge() (0) | 2022.01.08 |
[Pandas] 데이터 연결 (concat), 인덱스 연결 (0) | 2022.01.07 |
[Pandas] 데이터 변경해서 새로운 컬럼생성 (MDD 컬럼) (0) | 2022.01.07 |
[Pandas] 중복 데이터 제거하기 (0) | 2022.01.04 |