pandas 테이블 합치기 :: A4용지

저번 포스팅에서 진행되었던 내용들을 그대로 끌고 오겠습니다.

(임폴트하고.. 테이블 작성하고.. 중요하지 않은 부분들이 중복되는게 보기 좋아 보이지 않네요.)


df3 테이블을 보시겠습니다.

AAPL_HighAAPL_Low
Date
2010-01-0430.6430.34
2010-01-0530.8030.46
2010-01-0630.7530.11
2010-01-0730.2929.86
2010-01-0830.2929.87

애플의 주가 정보입니다. 각 날짜의 최고가와 최저가가 적혀져 있네요.


df4 테이블을 보시겠습니다.

GOOG_HighGOOG_Low
Date
2010-01-04629.511067624.241073
2010-01-05627.841071621.541045
2010-01-06625.861078606.361042
2010-01-07610.001045592.651008
2010-01-08603.251034589.110988

구글의 주가 정보입니다. 애플 주가 정보와 같게 각 날짜의 최고가와 최저가가 적혀져 있네요.



이 두 테이블을 합쳐보려고 합니다.

테이블를 합칠때는 merge()함수를 사용하면 편한데요, 그 사용법을 알아봅시다.


1
2
df5 = pd.merge(df3, df4, left_index=True, right_index=True)
df5.head()
cs
AAPL_HighAAPL_LowDate_xGOOG_HighGOOG_LowDate_y
Date
2010-01-0430.6430.342010-01-04629.511067624.2410732010-01-04
2010-01-0530.8030.462010-01-05627.841071621.5410452010-01-05
2010-01-0630.7530.112010-01-06625.861078606.3610422010-01-06
2010-01-0730.2929.862010-01-07610.001045592.6510082010-01-07
2010-01-0830.2929.872010-01-08603.251034589.1109882010-01-08


merge(df3, df4, left_index=True, right_index=True) 의 값은 위와 같습니다!

df3, df4라고 순서대로 기입한데로 결과가 나왔네요.

특이한 점은 각 테이블의 인덱스 값이 오른쪽으로 위치해있습니다.


결과적으로 날짜 정보가 3개 열이나 되는데요, 이것들을 통일시켜 봅시다.


1
2
3
4
5
df3['Date'] = df3.index
df4['Date'] = df4.index
df5 = pd.merge(df3, df4, on='Date')
df5 = df5.set_index('Date')
df5.head()
cs
AAPL_HighAAPL_LowGOOG_HighGOOG_Low
Date
2010-01-0430.6430.34629.511067624.241073
2010-01-0530.8030.46627.841071621.541045
2010-01-0630.7530.11625.861078606.361042
2010-01-0730.2929.86610.001045592.651008
2010-01-0830.2929.87603.251034589.110988

생각보다 귀찮은 과정을 거칩니다.

각 인덱스를 Date로 정하고 merge()함수 세번째 파라미터에 on='Date'를 추가하면서 df5 테이블을 생성합니다.

df5테이블에서 Date 열을 인덱스로 할 것이라고 명시해둡니다.

끝!

'통계 및 데이터 처리 > python' 카테고리의 다른 글

워드 클라우드 그리기 : 데이터 전처리  (1) 2017.08.22
konlpy : 텍스트 분석하기  (0) 2017.08.21
file io  (0) 2017.08.10
pandas 데이터 테이블 다루기  (0) 2017.08.09
pandas datatable 생성  (0) 2017.08.09

+ Recent posts