Updated:

import pandas as pd
import numpy as np

1. concat

concat 메소드를 사용하면 서로 다른 DataFrame을 연결할 수 있다.

pd.concat(objs,axis=0,ignore_index=False)

  • objs: 합치려는 DataFrame을 sequence 형태로 묶어준다.
  • axis: NumPy axis를 생각하면 편하다.
  • ignore_index: False인 경우 각자 사용하던 index가 그대로 적용이 되고, True인 경우 합쳐진 순서대로 0부터 차례대로 index가 붙여진다.
data = np.random.randint(1,100,(6,5))

df = pd.DataFrame(data,index = list('abcdef'), columns=['col ' + str(i) for i in range(1,6)])

df
col 1 col 2 col 3 col 4 col 5
a 62 8 54 74 79
b 20 2 78 24 21
c 66 37 47 78 87
d 98 30 91 38 82
e 67 67 50 57 17
f 22 39 68 58 72
new_row = pd.DataFrame(np.random.randint(1,100,(5,)).reshape(1,-1),
                       columns=df.columns)

df2 = pd.concat([df,new_row])

df2
col 1 col 2 col 3 col 4 col 5
a 62 8 54 74 79
b 20 2 78 24 21
c 66 37 47 78 87
d 98 30 91 38 82
e 67 67 50 57 17
f 22 39 68 58 72
0 93 24 93 7 74
new_row = pd.DataFrame(np.random.randint(1,100,(5,)).reshape(1,-1),
                       columns=df.columns)

df2 = pd.concat([df,new_row],ignore_index=True)

df2
col 1 col 2 col 3 col 4 col 5
0 62 8 54 74 79
1 20 2 78 24 21
2 66 37 47 78 87
3 98 30 91 38 82
4 67 67 50 57 17
5 22 39 68 58 72
6 8 35 7 17 28
new_col = pd.DataFrame(np.random.randint(1,100,(6,)),
                       index=list('abcdef'),columns=['col 6'])

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

df3
col 1 col 2 col 3 col 4 col 5 col 6
a 62 8 54 74 79 18
b 20 2 78 24 21 51
c 66 37 47 78 87 82
d 98 30 91 38 82 63
e 67 67 50 57 17 21
f 22 39 68 58 72 19

2. append

DataFrame에 row를 추가할 때 사용할 수 있다.

df.append(other,ignore_index=False)

  • other: DataFrame or Series/dict-list object or list of these
  • other의 row를 차례대로 DataFrame에 추가한 새로운 DataFrame을 반환한다.
  • ignore_index: False인 경우 각자 사용하던 index가 그대로 적용이 되고, True인 경우 합쳐진 순서대로 0부터 차례대로 index가 붙여진다.
data = np.random.randint(1,100,(6,5))

df = pd.DataFrame(data,index = list('abcdef'), columns=['col ' + str(i) for i in range(1,6)])

df
col 1 col 2 col 3 col 4 col 5
a 38 40 88 36 28
b 92 9 7 57 88
c 37 60 86 9 72
d 44 39 83 57 99
e 26 25 98 77 35
f 21 32 67 29 87
new_row = pd.DataFrame(np.random.randint(1,100,(5,)).reshape(1,-1),
                       columns=df.columns)

df.append(new_row)
col 1 col 2 col 3 col 4 col 5
a 38 40 88 36 28
b 92 9 7 57 88
c 37 60 86 9 72
d 44 39 83 57 99
e 26 25 98 77 35
f 21 32 67 29 87
0 2 84 82 16 5
new_row = pd.DataFrame(np.random.randint(1,100,(5,)).reshape(1,-1),
                       columns=df.columns)

df.append(new_row,ignore_index=True)
col 1 col 2 col 3 col 4 col 5
0 38 40 88 36 28
1 92 9 7 57 88
2 37 60 86 9 72
3 44 39 83 57 99
4 26 25 98 77 35
5 21 32 67 29 87
6 13 76 16 34 83

Leave a comment