データ結合メソッド
pd.concat()を
利用して
データの結合方法を
説明します
[PR]※本サイトには、プロモーションが含まれています
今回紹介するデータ結合
pd.concatは
pandas ライブラリの関数で
特定の軸に沿って
pandas オブジェクトを連結するために
使用されます
DataFrame や Series を結合するのに非常に便利です
pd.concat([df1,df2])
pd.concatでデータを結合する
2つのデータがあります
A | B |
1 | 3 |
2 | 4 |
A | B |
5 | 7 |
6 | 8 |
2つのデータをpd.concatで結合させ
データ3を作りたいと考えています
A | B |
1 | 3 |
2 | 4 |
5 | 7 |
6 | 8 |
pd.concatでデータを結合するコードを書きます
import pandas as pd
df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]})
result = pd.concat([df1, df2])
print(result)
実行結果
A B
0 1 3
1 2 4
0 5 7
1 6 8
データを結合できました
axis
axis = 1にするとデータを横に結合することが可能です
pd.concat([df1, df2], axis =1)
結合結果
A B A B
0 1 3 5 7
1 2 4 6 8
データが縦ではなく
横に結合できてる..!
ignore_index
デフォルトはFalse
True にすると、連結する軸のインデックス値を無視します
pd.concat([df1, df2],ignore_index = False)
結合結果
A B
0 1 3
1 2 4
0 5 7
1 6 8
インデックス値が
0101になっていますね
元のデータのインデックスを
参照してることが分かります
Trueにします
pd.concat([df1, df2],ignore_index = True)
結合結果
A B
0 1 3
1 2 4
2 5 7
3 6 8
インデックスが0,1,2,3になっています
インデックスが
リセットされてますね
keys
わたされたキーを外側のレベルとして
階層インデックスを構築します
pd.concat([df1, df2],keys = ["df1","df2"])
結合結果
pd.concat([df1, df2],keys = ["df1","df2"])
結合結果
A B
df1 0 1 3
1 2 4
df2 0 5 7
1 6 8
結合前のデーフレームを
インデックスの更に
上の階層に設定できていますね
names
階層インデックスに名前をつけます
pd.concat([df1, df2],keys = ["df1","df2"],names = ["DataFrame","number"])
結合結果
A B
DataFrame number
df1 0 1 3
1 2 4
df2 0 5 7
1 6 8
インデックスに
DataFrameと
numberといった
名前がついてる!
join
{‘inner’, ‘outer’}。デフォルトは’outer’
outerは和集合, innerは積集合
import pandas as pd
df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4], 'C' :[2,4]})
df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]})
result = pd.concat([df1, df2],join="inner")
print(result)
実行結果
A B
0 1 3
1 2 4
0 5 7
1 6 8
import pandas as pd
df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4], 'C' :[2,4]})
df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]})
result = pd.concat([df1, df2],join="inner")
print(result)
実行結果
import pandas as pd
df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4], 'C' :[2,4]})
df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]})
result = pd.concat([df1, df2],join="outer")
print(result)
実行結果
A B C
0 1 3 2.0
1 2 4 4.0
0 5 7 NaN
1 6 8 NaN
verify_integrity
連結されたデータフレームのインデックスに
重複がないことを確認するために使用されます
デフォルトでは False
になっており
このパラメータを True
に設定すると
連結プロセス中にインデックスの重複がチェックされ
もし重複が見つかった場合はエラーが発生します
import pandas as pd
# サンプル DataFrame を作成
df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]}, index=[1, 2])
# verify_integrity を True にして連結する
try:
result = pd.concat([df1, df2], verify_integrity=True)
except ValueError as e:
print("ValueError:", e)
実行結果
ValueError: Indexes have overlapping values: Int64Index([0, 1], dtype='int64')
copy
copy パラメータは
パフォーマンスとメモリ使用量を最適化するために使用します
特に、大規模なデータセットを扱う場合や
連結後に元のデータを変更しない場合に役立ちます