파이썬 행끼리 더하기 - paisseon haengkkili deohagi

데이터프레임을 위/아래(행 기준)로 합치거나 옆으로(열 기준)으로 합치기 위해서는 pd.concat을 사용하면 된다.

# Pandas import pandas as pd # 위/아래로 합치기 - 행 기준 pd.concat([df1, df2], axis = 0) # 옆으로 합치기 - 열 기준 pd.concat([df1, df2], axis = 1)

[]

합칠 데이터프레임을 입력하면 된다. 이때 입력된 순서대로 데이터프레임이 합쳐진다.

axis = 0

- 행 기준

- 동일한 column명을 기준으로 데이터프레임이 위/아래로 쌓아진다.

axis = 1

- 열 기준

- 데이터프레임이 옆으로 붙는다.

[ Example ]

예시로 사용할 데이터를 생성하였다.

행(axis=0)으로 합쳐질 때 column이 일치하지 않는 곳은 NaN으로 채워진다. 

→ b의 열 'num'을 'number'로 변경한 후 행을 기준으로 데이터를 합쳐보았다.

동영상이 없는 텍스트 강의 자료입니다.

판다스에서 여러 개의 데이터를 합치는 방법을 알아보겠습니다.

행방향 합치기

다음과 같은 표 df1이 있습니다.

df1 = pd.DataFrame({'A': [101, 102, 103], 'B': [201, 202, 203]}, index=[0, 1, 2]) df1

AB012
101 201
102 202
103 203

df1의 아래에 다음의 df2와 같은 표를 이어붙이려고 합니다.

df2 = pd.DataFrame({'A': [105, 106, 107], 'B': [205, 206, 207]}, index=[3, 4, 5]) df2

AB345
105 205
106 206
107 207

concat 함수를 이용하면 2개의 표을 이어 붙일 수 있습니다. 기본적으로 행 방향으로 이어붙입니다. 즉, 첫 번째 표의 아래에 두 번째 표를 붙입니다.

AB012345
101 201
102 202
103 203
105 205
106 206
107 207

append 메소드를 이용해도 동일한 결과를 얻을 수 있습니다.

AB012345
101 201
102 202
103 203
105 205
106 206
107 207

한 줄 추가

표에 한 행을 추가하는 방법은 조금 다릅니다. 다음과 같은 한 행이 있을 때,

s = pd.Series({'A': 104, 'B': 204})

df1에 바로 붙이면 오류가 발생합니다.

--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-13-cc786cf9da5a> in <module> ----> 1 df1.append(s) ~\Anaconda3\lib\site-packages\pandas\core\frame.py in append(self, other, ignore_index, verify_integrity, sort) 7074 if other.name is None and not ignore_index: 7075 raise TypeError( -> 7076 "Can only append a Series if ignore_index=True" 7077 " or if the Series has a name" 7078 ) TypeError: Can only append a Series if ignore_index=True or if the Series has a name

이때는 ignore_index=True를 추가해줍니다.

df1.append(s, ignore_index=True)

AB0123
101 201
102 202
103 203
104 204

열방향 합치기

아래 표를 df1의 오른쪽에 붙여보겠습니다.

df3 = pd.DataFrame({'C': [301, 302, 303], 'D': [401, 402, 403]}, index=[0, 1, 2]) df3

CD012
301 401
302 402
303 403

axis=1을 추가하면 열 방향으로 합칩니다.

pd.concat([df1, df3], axis=1)

ABCD012
101 201 301 401
102 202 302 402
103 203 303 403

Toplist

최신 우편물

태그