언빌리버블티

[Python] Pandas 데이터 프레임 병합 메서드 - pd.concat() 본문

Language/Python

[Python] Pandas 데이터 프레임 병합 메서드 - pd.concat()

나는 정은 2022. 10. 7. 10:13

Pandas 데이터 프레임 합치기 - 1

pd.concat()

데이터 프레임을 이어 붙이는 함수로 리스트 객체를 인자로 받는다.

  • axis = 0 : 위 아래로 병합
  • axis = 1 : 좌 우로 병합
  • join = ‘inner”, 결측치를 제외하고 병합
pd.concat(df) 
pandas.concat(objs, axis=0, join='outer', ignore_index=False, keys=None, 
              levels=None, names=None,verify_integrity=False, sort=False, copy=True)
 

pd.concat() 예시

    a   b   c
0  a0  b0  c0
1  a1  b1  c1
2  a2  b2  c2
3  a3  b3  c3 

    a   b   c   d
0  a2  b2  c2  d2
1  a3  b3  c3  d3
2  a4  b4  c4  d4
3  a5  b5  c5  d5

 

데이터 프레임 행방향 합치기 (axis = 0)

  • 데이터를 위 아래로 합친다.
  • default 값으로 axis 옵션은 0으로 들어간다.
    • 행 인덱스와 열 인덱스가 서로 다른 두 데이터프레임을 병합하는 경우 본래 갖고 있던 인덱스를 그대로 사용하고 열 인덱스가 맞지 않는 부분은 NaN 값으로 채워진다.
pd.concat([df1, df2], axis=0)
  • 행 인덱스가 기본적으로는 원래의 인덱스를 그대로 가져와 사용하기 때문에 재배열을 위해서는 ignore_index 옵션을 True로 지정해주어야 한다.
    • NaN값은 fillna()를 통해 채울 수 있다.
pd.concat([df1, df2], axis=0, ignore_index=True).fillna(0)

 

데이터 프레임 열방향 합치기 (axis = 1)

  • 데이터 프레임을 좌, 우로 이어 붙인다.
    • 열방향으로 axis 를 지정해두고 , 서로 인덱스가 맞지 않는 부분에 대해서는 NaN 값을 채워 반환한다.
      • 두 NaN 값을 제외하고 교집합 만을 출력하고 싶다면 join 옵션을 inner로 지정해주면 된다 !
        • inner : 두 NaN 값을 제외한 데이터프레임 , 값이 겹치는 것만 출력
        • outer : default join 옵션 , 값이 겹치지 않는다면 NaN으로 저장한다.
pd.concat([df1, df2], axis=1, ignore_index=True)
 
pd.concat([df1, df2], axis=0, ignore_index=True, join = 'inner')

pd.concat([df1, df2], axis=0, ignore_index=True, join = 'outer')
 

Series 간의 병합

s1 = pd.Series(['JE', 'HY', 'JH'], name='s1')
s2 = pd.Series(['JY', 'JM', 'GH'], name='s2')
 
pd.concat([s1, s2], axis=0, ignore_index=True)
0    JE
1    HY
2    JH
3    JY
4    JM
5    GH
dtype: object

 

print(pd.concat([s1, s2], axis=1))
   s1  s2
0  JE  JY
1  HY  JM
2  JH  GH

 

 

 

Comments