you can use pandas to combine the DataFrames by a very simple way.
まず下記のコードで3つのDataFrameを作ります。
data1={ 'A':'A0 A1 A2 A3'.split(), 'B':'B0 B1 B2 B3'.split(), 'C':'C0 C1 C2 C3'.split(), 'D':'D0 D1 D2 D3'.split(), 'index':[0,1,2,3] } data2={ 'A':'A4 A5 A6 A7'.split(), 'B':'B4 B5 B6 B7'.split(), 'C':'C4 C5 C6 C7'.split(), 'D':'D4 D5 D6 D7'.split(), 'index':[4,5,6,7] } data3={ 'A':'A8 A9 A10 A11'.split(), 'B':'B8 B9 B10 B11'.split(), 'C':'C8 C9 C10 C11'.split(), 'D':'D8 D9 D10 D11'.split(), 'index':[8,9,10,11] } df1=pd.DataFrame(data1,index=data1['index']) df2=pd.DataFrame(data2,index=data2['index']) df3=pd.DataFrame(data3,index=data3['index'])
DataFrameはこんな感じになりますね:
df1
A | B | C | D | |
---|---|---|---|---|
0 | A0 | B0 | C0 | D0 |
1 | A1 | B1 | C1 | D1 |
2 | A2 | B2 | C2 | D2 |
3 | A3 | B3 | C3 | D3 |
df2
A | B | C | D | |
---|---|---|---|---|
4 | A4 | B4 | C4 | D4 |
5 | A5 | B5 | C5 | D5 |
6 | A6 | B6 | C6 | D6 |
7 | A7 | B7 | C7 | D7 |
df3
A | B | C | D | |
---|---|---|---|---|
8 | A8 | B8 | C8 | D8 |
9 | A9 | B9 | C9 | D9 |
10 | A10 | B10 | C10 | D10 |
11 | A11 | B11 | C11 | D11 |
Concatenation
Concatenation basically glues DataFrame, keep in mind that dimensions should be match the axis you are concatenating on. you can use pd.concat() and pass a list of DataFrame to run it.
まずDataFrameのリストを入れてみます。
pd.concat([df1,df2,df3],)
これは実際jupyterで出力されたTableです。
A | B | C | D | |
---|---|---|---|---|
0 | A0 | B0 | C0 | D0 |
1 | A1 | B1 | C1 | D1 |
2 | A2 | B2 | C2 | D2 |
3 | A3 | B3 | C3 | D3 |
4 | A4 | B4 | C4 | D4 |
5 | A5 | B5 | C5 | D5 |
6 | A6 | B6 | C6 | D6 |
7 | A7 | B7 | C7 | D7 |
8 | A8 | B8 | C8 | D8 |
9 | A9 | B9 | C9 | D9 |
10 | A10 | B10 | C10 | D10 |
11 | A11 | B11 | C11 | D11 |
じゃ、もしaxis=1といParameterを入れたらどうになる?
pd.concat([df1,df2,df3],axis=1)
これは実際jupyterで出力されたTableです。
A | B | C | D | index | A | B | C | D | index | A | B | C | D | index | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | A0 | B0 | C0 | D0 | 0.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1 | A1 | B1 | C1 | D1 | 1.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
2 | A2 | B2 | C2 | D2 | 2.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
3 | A3 | B3 | C3 | D3 | 3.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
4 | NaN | NaN | NaN | NaN | NaN | A4 | B4 | C4 | D4 | 4.0 | NaN | NaN | NaN | NaN | NaN |
5 | NaN | NaN | NaN | NaN | NaN | A5 | B5 | C5 | D5 | 5.0 | NaN | NaN | NaN | NaN | NaN |
6 | NaN | NaN | NaN | NaN | NaN | A6 | B6 | C6 | D6 | 6.0 | NaN | NaN | NaN | NaN | NaN |
7 | NaN | NaN | NaN | NaN | NaN | A7 | B7 | C7 | D7 | 7.0 | NaN | NaN | NaN | NaN | NaN |
8 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | A8 | B8 | C8 | D8 | 8.0 |
9 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | A9 | B9 | C9 | D9 | 9.0 |
10 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | A10 | B10 | C10 | D10 | 10.0 |
11 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | A11 | B11 | C11 | D11 | 11.0 |
Merging
The merging function allows you to merge DataFrames using similar as SQL.
まず簡単なデータを作ってみます。
left=pd.DataFrame({ 'key':'K0 K1 K2 K3'.split(), 'A':'A0 A1 A2 A3'.split(), 'B':'B0 B1 B2 B3'.split() }) right=pd.DataFrame({ 'key':'K0 K1 K2 K3'.split(), 'C':'C0 C1 C2 C3'.split(), 'D':'D0 D1 D2 D3'.split() })
次はpd.merge()を使います。
pd.merge(left,right,on=’key’)
これは実際jupyterで出力されたTableです。
key | A | B | C | D | |
---|---|---|---|---|---|
0 | K0 | A0 | B0 | C0 | D0 |
1 | K1 | A1 | B1 | C1 | D1 |
2 | K2 | A2 | B2 | C2 | D2 |
3 | K3 | A3 | B3 | C3 | D3 |
Joining
Joining is a convenient method for combining the columns of two potentially differently-indexed DataFrame into a single result DataFrame.
まず簡単なデータを作ってみます。
left=pd.DataFrame(index='K0 K1 K2'.split(), data={ 'A':'A0 A1 A2'.split(), 'B':'B0 B1 B2'.split() }) right=pd.DataFrame(index='K0 K2 K3'.split(), data={ 'C':'C0 C1 C2'.split(), 'D':'C0 D1 D2'.split() })
次はpd.join()を使ってみます。
left.join(right)
これは実際jupyterで出力されたTableです。
A | B | C | D | |
---|---|---|---|---|
K0 | A0 | B0 | C0 | C0 |
K1 | A1 | B1 | NaN | NaN |
K2 | A2 | B2 | C1 | D1 |
それじゃねー