DeseoDeSeo
[Python] DataFrame 병합 본문
- 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 |