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