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 |
それじゃねー