17 Concat

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]:
ArizonaBostonSeoulDetroit
20030123
20044567
2005891011
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]:
PariRomaSeoulTokyo
20040123
20054567
2006891011
In [3]:
#  DataFrame 객체들을 수평축(axis=0)으로 합집합으로 표현
pd.concat([df_A, df_B],  axis=0)
Out[3]:
ArizonaBostonDetroitPariRomaSeoulTokyo
20030.01.03.0NaNNaN2NaN
20044.05.07.0NaNNaN6NaN
20058.09.011.0NaNNaN10NaN
2004NaNNaNNaN0.01.023.0
2005NaNNaNNaN4.05.067.0
2006NaNNaNNaN8.09.01011.0
In [4]:
#  DataFrame 객체들을 수평축(axis=0)으로 교집합으로 표현
pd.concat([df_A, df_B],  axis=0, join='inner')
Out[4]:
Seoul
20032
20046
200510
20042
20056
200610
In [5]:
# DataFrame 객체들을 수평축(axis=0)으로 합집합으로 표현하면서 원 DataFrame를  multi index로 표시
pd.concat([df_A, df_B],  axis=0, keys = ['df_A', 'df_B'])
Out[5]:
ArizonaBostonDetroitPariRomaSeoulTokyo
df_A20030.01.03.0NaNNaN2NaN
20044.05.07.0NaNNaN6NaN
20058.09.011.0NaNNaN10NaN
df_B2004NaNNaNNaN0.01.023.0
2005NaNNaNNaN4.05.067.0
2006NaNNaNNaN8.09.01011.0
In [6]:
#DataFrame 객체들을 수평축(axis=0)으로 합집합으로 표현하면서 원 ataFrame를  columns으로 표시
pd.concat([df_A, df_B],  axis=1, keys = ['df_A', 'df_B'])
Out[6]:
df_Adf_B
ArizonaBostonSeoulDetroitPariRomaSeoulTokyo
20030.01.02.03.0NaNNaNNaNNaN
20044.05.06.07.00.01.02.03.0
20058.09.010.011.04.05.06.07.0
2006NaNNaNNaNNaN8.09.010.011.0
In [7]:
##DataFrame에 수직으로 또 다른 DataFrame을 추가
df_A.append(df_B)
Out[7]:
ArizonaBostonDetroitPariRomaSeoulTokyo
20030.01.03.0NaNNaN2NaN
20044.05.07.0NaNNaN6NaN
20058.09.011.0NaNNaN10NaN
2004NaNNaNNaN0.01.023.0
2005NaNNaNNaN4.05.067.0
2006NaNNaNNaN8.09.01011.0
In [8]:
##DataFrame에 수직으로 한 row를 추가
df_A.append(df_B.loc[2006])
Out[8]:
ArizonaBostonSeoulDetroitPariRomaTokyo
20030.01.02.03.0NaNNaNNaN
20044.05.06.07.0NaNNaNNaN
20058.09.010.011.0NaNNaNNaN
2006NaNNaN10.0NaN8.09.011.0
In [9]:
##DataFrame에 수직으로 dictionary 를 추가
dicts = [{'Arizona': 100, 'Boston':200 }]
df_A.append(dicts)
Out[9]:
ArizonaBostonSeoulDetroit
2003012.03.0
2004456.07.0
20058910.011.0
0100200NaNNaN


© 2017. All rights reserved.

Powered by ZooFighter v0.12