관리 메뉴

DeseoDeSeo

[Python] DataFrame 병합 본문

Python

[Python] DataFrame 병합

deseodeseo 2023. 8. 23. 17:52
  • concat (= 물리적인 느낌, 인덱스나 컬럼으로 양 옆이나 위 아래로 붙임  )
  • merge ( = 공통적인 데이터를 기준으로 병합)
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])

df3 = pd.DataFrame({'a':['a3','a4','a5','a6'],
                   'b':['b3','b4','b5','b6'],
                   'c':['c3','c4','c5','c6'],
                   'd':['d3','d4','d5','d6']},
                   index = [3,4,5,6])

 

DataFrame 간 병합
resultDf1 = pd.concat([df1,df2])
resultDf1

 새로운 인덱스 부여
resultDf2 = pd.concat([df1,df2,df3], ignore_index=True)
resultDf2

행( 인덱스 라벨)을 기준으로 병합
- axis =0 ( 하단으로 붙여짐)
- axis=1(가로로 병합됨, 옆으로 붙여짐)
resultDf3 =pd.concat([df1,df2], axis =1)
resultDf3

< concat함수의 join 속성 >
- Innerjoin : 공통된 것들만 출력됨.
- outerjoin( Fulljoin ) : 모두 출력됨( 공통 + 비공통)
resultDf4 = pd.concat([df1,df2], axis=1, join='inner')
resultDf4

resultDf4 = pd.concat([df1,df2,df3], axis=1, join='inner')
resultDf4

Series간 병합
sr1 = pd.Series(['e0','e1','e2','e3'], name = 'e')
sr2 = pd.Series(['f0','f1','f2'], name = 'f')
sr3 = pd.Series(['g0','g1','g2','g3'], name = 'g')
sr1

sr3

resultDf5 =pd.concat([sr1,sr2])
resultDf5

일치하지 않는 데이터에는 Nan 출력
resultDf5 =pd.concat([sr1,sr2], axis=1)
resultDf5

Series와 DataFrame 병합

1) Series 생성

sr4 = pd.Series(['h0','h1','h2','h3'], name = 'h', index = [1,3,4,5])
sr4

2) DataFrame

df2

resultDf6 =pd.concat([sr4,df2])
resultDf6

resultDf6 =pd.concat([df2,sr4], axis=1)
resultDf6

Merge
dic1 = { 'key':['K0','K2','K3','K4'],'A':['A0','A1','A2','A3'],'B':['B0','B1','B2','B3'] }
df4 = pd.DataFrame(dic1)
df4

dic2 = { 'key':['K0','K1','K2','K3'],'C':['C0','C1','C2','C3'],'D':['D0','D1','D2','D3'] }
df5 = pd.DataFrame(dic2)
df5

'  key ' 컬럼을 이용해서 merge
resultDf7 = pd.merge(df4, df5,on = 'key')
resultDf7

< merge 함수의 how 속성 >
- Innerjoin : 공통된 것들만 출력
- Fulljoin(outerjoin): 모두 출력( 공통된 것들 + 공통되지 않은 것들 )
- leftjoin: A를 기준으로 공통된 것들만 출력
- rightjoin: B를 기준으로 공통 된 것들만  "
resultDf7 = pd.merge(df4, df5,on = 'key',how='outer')
resultDf7

resultDf9 = pd.merge(df4, df5,on = 'key',how='left')
resultDf9

행/ 열 삭제
resultDf9.drop(1)

컬럼 삭제도 가
resultDf9.drop('B',axis=1)

삭제하면 데이터 자체에 반영해주는 함수 ( inplace)
resultDf9.drop(2,inplace=True)
resultDf9

'Python' 카테고리의 다른 글

[Python] matplotlib  (0) 2023.08.23
[Python] CrimeData 실습  (0) 2023.08.23
[Python] TrainData 실습  (0) 2023.08.23
[Python] population실습  (0) 2023.08.22
[Python] Pandas 모듈 Series Class  (1) 2023.08.22