반응형
Notice
Recent Posts
Recent Comments
Link
개발은 처음이라 개발새발
concat() 함수로 여러 데이터프레임 합치기 [python/pandas] 본문
반응형
데이터프레임은 구성의 형태와 속성이 균형하담녀 행 또는 열 중에 어느 한 방향으로 이어 붙여도 데이터의 일관성을 유지할 수 있습니다. 오늘은 기존 데이터프레임의 형태를 유지하면서 이어 붙이는 concat() 함수에 대해 알아보겠습니다. 우선 예제를 만들어 보겠습니다.
import pandas as pd
df1 = pd.DataFrame({'a':['a0','a1','a2','a3'],
'b':['b0','b1','b2','b3'],
'c':['c0','c1','c2','c3']},
index=[0,1,2,3])
df2 = pd.DataFrame({'a':['a2','a3','a4','a5'],
'b':['b2','b3','b4','b5'],
'c':['c2','c3','c4','c5'],
'd':['d2','d3','d4','d5']},
index=[2,3,4,5])
print(df1,'\n')
print(df2,'\n')
#df1, df2합치기
result1 = pd.concat([df1,df2])
print(result1,'\n')
a b c
0 a0 b0 c0
1 a1 b1 c1
2 a2 b2 c2
3 a3 b3 c3
a b c d
2 a2 b2 c2 d2
3 a3 b3 c3 d3
4 a4 b4 c4 d4
5 a5 b5 c5 d5
a b c d
0 a0 b0 c0 NaN
1 a1 b1 c1 NaN
2 a2 b2 c2 NaN
3 a3 b3 c3 NaN
2 a2 b2 c2 d2
3 a3 b3 c3 d3
4 a4 b4 c4 d4
5 a5 b5 c5 d5
네 이렇게 concat() 함수를 통해서 예제를 합쳐봤는데요. 결과를 보면 df1에 없는 d컬럼의 경우 합쳐졌을 때 df1은 NaN처리가 돼 있는 것을 확인할 수 있습니다. 현재 결과물을 위아래로 합쳐졌는데 좌우로 합치는 것은 어떻게 하면 될까요? 그리고 모든 데이터를 합치는 것이 아니라 결측치가 없는 인덱스만 추출하려면 어떻게 해야 할까요? 이때는 concat()함수에 옵션들을 사용합니다. 예제를 통해 직접 확인해보겠습니다.
#2개의 데이터프레임을 좌우 열 방향으로 이어 붗이듯 연결하기
result2 = pd.concat([df1,df2], axis=1)
print(result2,'\n')
#join = 'inner' 옵션 적용하기(교집합)
result2_in = pd.concat([df1, df2], axis=1, join='inner')
print(result2_in,'\n')
a b c a b c d
0 a0 b0 c0 NaN NaN NaN NaN
1 a1 b1 c1 NaN NaN NaN NaN
2 a2 b2 c2 a2 b2 c2 d2
3 a3 b3 c3 a3 b3 c3 d3
4 NaN NaN NaN a4 b4 c4 d4
5 NaN NaN NaN a5 b5 c5 d5
a b c a b c d
2 a2 b2 c2 a2 b2 c2 d2
3 a3 b3 c3 a3 b3 c3 d3
좌우 열 방향으로 두 데이터프레임을 합쳤고 결측치가 없는 프레임만 추출해봤습니다. 여기에 사용한 옵션은 "axis="와 "join="옵션을 사용했는데요. join='inner' 옵션을 설정하면 연결할 데이터프레임들의 행 인덱스의 교집합 기준으로 사용하게 됩니다. 그렇기 때문에 df1과 df2의 공통으로 들어가는 2번 3번 인덱스만이 추출됩니다. 이렇게 concat() 함수에 대해 알아봤는데요. 다음 편에서는 SQL의 join과 비슷한 merge()함수에 대해 알아보도록 하겠습니다.
반응형
'파이썬 > 판다스' 카테고리의 다른 글
merge()함수로 데이터프레임 병합하기2 [python/pandas] (0) | 2022.09.13 |
---|---|
merge()함수로 데이터프레임 병합하기 [python/pandas] (0) | 2022.09.03 |
파이썬 열 분리 [python/pandas] (1) | 2022.08.20 |
isin()매소드를 활용한 필터링 [python/pandas] (0) | 2022.08.19 |
파이썬으로 필터링하기 [python/pandas] (0) | 2022.08.15 |