17 Concat
| 8 Minute Read on Pandas
Concat, Append¶
- Concat Docs를 보면 Concat 메소드는 축의 방향에 따라 Pandas object(DataFrame, Series 등등)을 연결(합침)한다고 정의되어 있음 (Concatenate pandas objects along a particular axis with optional set logic along the other axes)
- 기본 메소드 형태는 pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True)
중요 인자를 보면
- objs: DataFrame, Series
- axis=0:기본은 0으로 되어 있어 상하로 합치고, 1로 선택하면 좌우로 합침
- join='outer: 기본은 outer로 되어 있 합집합을 합치고, 'inner'를 선택하면 교집합을 합침
Append는 Concat과 비슷하지만 DataFrame에만 적용되고 오직 DataFrame의 세로축으로만 마지막에 추가되고 return 값으로 DataFrame을 반환하다.
- Append의 인자로는 DataFrame, Series, dict-like object, list등이 사용 될 수 있다.
In [1]:
import pandas as pd
import numpy as np
data = np.arange(12).reshape((-1, 4))
index = [2003,2004,2005]
columns = ['Arizona','Boston', 'Seoul','Detroit']
df_A= pd.DataFrame(data, index = index, columns = columns)
df_A
Out[1]:
In [2]:
data = np.arange(12).reshape((-1, 4))
index = [2004,2005,2006]
columns = ['Pari','Roma', 'Seoul','Tokyo']
df_B= pd.DataFrame(data, index = index, columns = columns)
df_B
Out[2]:
In [3]:
# DataFrame 객체들을 수평축(axis=0)으로 합집합으로 표현
pd.concat([df_A, df_B], axis=0)
Out[3]:
In [4]:
# DataFrame 객체들을 수평축(axis=0)으로 교집합으로 표현
pd.concat([df_A, df_B], axis=0, join='inner')
Out[4]:
In [5]:
# DataFrame 객체들을 수평축(axis=0)으로 합집합으로 표현하면서 원 DataFrame를 multi index로 표시
pd.concat([df_A, df_B], axis=0, keys = ['df_A', 'df_B'])
Out[5]:
In [6]:
#DataFrame 객체들을 수평축(axis=0)으로 합집합으로 표현하면서 원 ataFrame를 columns으로 표시
pd.concat([df_A, df_B], axis=1, keys = ['df_A', 'df_B'])
Out[6]:
In [7]:
##DataFrame에 수직으로 또 다른 DataFrame을 추가
df_A.append(df_B)
Out[7]:
In [8]:
##DataFrame에 수직으로 한 row를 추가
df_A.append(df_B.loc[2006])
Out[8]:
In [9]:
##DataFrame에 수직으로 dictionary 를 추가
dicts = [{'Arizona': 100, 'Boston':200 }]
df_A.append(dicts)
Out[9]: