데이터 합치기
판다스에서 여러 개의 데이터를 합치는 방법을 알아보겠습니다.
import pandas as pd
행방향 합치기
다음과 같은 표 df1
이 있습니다.
df1 = pd.DataFrame({'A': [101, 102, 103],
'B': [201, 202, 203]},
index=[0, 1, 2])
df1
A | B | |
---|---|---|
0 | 101 | 201 |
1 | 102 | 202 |
2 | 103 | 203 |
df1
의 아래에 다음의 df2
와 같은 표를 이어붙이려고 합니다.
df2 = pd.DataFrame({'A': [105, 106, 107],
'B': [205, 206, 207]},
index=[3, 4, 5])
df2
A | B | |
---|---|---|
3 | 105 | 205 |
4 | 106 | 206 |
5 | 107 | 207 |
concat
함수를 이용하면 2개의 표을 이어 붙일 수 있습니다. 기본적으로 행 방향으로 이어붙입니다. 즉, 첫 번째 표의 아래에 두 번째 표를 붙입니다.
pd.concat([df1, df2])
A | B | |
---|---|---|
0 | 101 | 201 |
1 | 102 | 202 |
2 | 103 | 203 |
3 | 105 | 205 |
4 | 106 | 206 |
5 | 107 | 207 |
append
메소드를 이용해도 동일한 결과를 얻을 수 있습니다.
df1.append(df2)
A | B | |
---|---|---|
0 | 101 | 201 |
1 | 102 | 202 |
2 | 103 | 203 |
3 | 105 | 205 |
4 | 106 | 206 |
5 | 107 | 207 |
한 줄 추가
표에 한 행을 추가하는 방법은 조금 다릅니다. 다음과 같은 한 행이 있을 때,
s = pd.Series({'A': 104, 'B': 204})
df1
에 바로 붙이면 오류가 발생합니다.
df1.append(s)
--------------------------------------------------------------------------- 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)
A | B | |
---|---|---|
0 | 101 | 201 |
1 | 102 | 202 |
2 | 103 | 203 |
3 | 104 | 204 |
열방향 합치기
아래 표를 df1
의 오른쪽에 붙여보겠습니다.
df3 = pd.DataFrame({'C': [301, 302, 303],
'D': [401, 402, 403]},
index=[0, 1, 2])
df3
C | D | |
---|---|---|
0 | 301 | 401 |
1 | 302 | 402 |
2 | 303 | 403 |
axis=1
을 추가하면 열 방향으로 합칩니다.
pd.concat([df1, df3], axis=1)
A | B | C | D | |
---|---|---|---|---|
0 | 101 | 201 | 301 | 401 |
1 | 102 | 202 | 302 | 402 |
2 | 103 | 203 | 303 | 403 |