TECHNOLOGY
Minato
pandas入門 – DataFrameを結合する
2つのDataFrameを縦に結合
2つのDataFrameを縦に結合するにはpandasのconcat()
を利用します 。
pd.concat([DataFrame1,DataFrame2])
例えば、上記のような2つのデータがあった場合には以下のように結合されます。
| A | B |
---|
0 | A0 | B0 |
1 | A1 | B1 |
2 | A3 | B2 |
3 | A3 | B3 |
4 | A4 | B4 |
コード
import pandas as pd
data1 = pd.read_csv('data1.csv')
data2 = pd.read_csv('data2.csv')
data3 = pd.concat([data1, data2])
2つのDataFrameを横に結合
引数にaxis=1
を与えると横に結合できます。
| A | B | C | D |
---|
0 | A0 | B0 | C0 | D0 |
1 | A1 | B1 | C1 | D1 |
2 | A3 | B2 | C2 | D2 |
コード
import pandas as pd
data1 = pd.read_csv('data1.csv')
data2 = pd.read_csv('data2.csv')
data3 = pd.concat([data1, data2], axis=1)
異なる形式のデータを特定のカラムをキーに結合する
異なる形式のデータを特定のカラムをキーに結合するにはmerge()
を利用します。
pd.merge(DataFrame1,DataFrame2, on='ColumnName')
B
で結合
コード
import pandas as pd
data1 = pd.read_csv('data1.csv')
data2 = pd.read_csv('data2.csv')
data3 = pd.merge(data1, data2, on='B')
2つのデータの異なるカラム名をキーに結合する
異なるカラム名で結合するには引数にon
ではなくleft_on
, right_on
を利用します。
B
とC
で結合
| A | B | C | D |
---|
0 | A0 | B0 | B0 | D0 |
1 | A1 | B1 | B1 | D1 |
2 | A2 | B2 | B2 | D2 |
コード
import pandas as pd
data1 = pd.read_csv('data1.csv')
data2 = pd.read_csv('data2.csv')
data3 = pd.merge(data1, data2, left_on='B', right_in='C')
merge関数のオプションに結合方法を指定する
merge関数で結合方法を指定するには引数にhow='結合方法'
を追加する
種類
inner
pd.merge(data1, data2, on='B'), how='inner'
data1とdata2の両方にあるキーの値のみ残り、片方にしかないものは削除されます
B
で結合
left
pd.merge(data1, data2, on='B'), how='left'
data1(左)にしかないデータは全て残り、data1(左)の存在しないキーのデータは削除されます。
また、data2(右)にB2がないのでD列はNaN
で補完されます。
B
で結合
| A | B | D |
---|
0 | A0 | B0 | D0 |
1 | A1 | B1 | D1 |
2 | A2 | B2 | NaN |
right
rigntはleftとは逆でdata2(右)にしかないデータは全て残り、data2(右)の存在しないキーのデータは削除されます。
outer
pd.merge(data1, data2, on='B'), how='outer'
outerの場合は全てのキーの値を残します。存在しない要素はNaNで補完されます。
B
で結合
| A | B | D |
---|
0 | A0 | B0 | D0 |
1 | A1 | B1 | D1 |
2 | A2 | B2 | NaN |
3 | NaN | B3 | D3 |