Pandas concat() の例
Pandasのconcat()メソッドは、DataFrameやSeriesなどのpandasオブジェクトを連結するために使用されます。連結操作の動作を変更するために、さまざまなパラメータを渡すことができます。
1. Pandas concat() 構文
concat() メソッドの構文は次の通りです:
concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
keys=None, levels=None, names=None, verify_integrity=False,
sort=None, copy=True)
- objs: 連結するpandasオブジェクトのシーケンス.
- join: 他の軸のインデックスの扱いを定義するオプションのパラメータ。有効な値は「inner」と「outer」です。
- join_axes: バージョン0.25.0で非推奨です。
- ignore_index: trueの場合、ソースオブジェクトのインデックスは無視され、結果には0、1、2…nからのインデックスのシーケンスが割り当てられます。
- キー: 結果のインデックスに識別子を追加するためのシーケンスです。出力内のソースオブジェクトをマーキングするのに役立ちます。
- レベル: マルチインデックスを作成するためのユニークなレベルを指定するシーケンス。
- 名前: 結果の階層インデックス内の各レベルの名前。
- 整合性を確認する: 新しい連結された軸に重複が含まれているかどうかをチェックします。これは高コストの操作です。
- ソート: 結合が「外側」の場合、非連結軸が既に整列していない場合はソートします。バージョン0.23.0で追加されました。
- コピー: Falseの場合、データを不必要にコピーしないでください.
おすすめの読み物: Python Pandas チュートリアル
2. Pandas concat() の例
2つのDataFrameオブジェクトを連結する簡単な例を見てみましょう。
import pandas
d1 = {"Name": ["Pankaj", "Lisa"], "ID": [1, 2]}
d2 = {"Name": "David", "ID": 3}
df1 = pandas.DataFrame(d1, index={1, 2})
df2 = pandas.DataFrame(d2, index={3})
print('********\n', df1)
print('********\n', df2)
df3 = pandas.concat([df1, df2])
print('********\n', df3)
出力 :
********
Name ID
1 Pankaj 1
2 Lisa 2
********
Name ID
3 David 3
********
Name ID
1 Pankaj 1
2 Lisa 2
3 David 3
連結は行方向(すなわち0軸)で行われることに注意してください。また、出力ではソースのデータフレームオブジェクトのインデックスが保持されます。
3. 列に沿って連結する、つまり1軸です。
d1 = {"Name": ["Pankaj", "Lisa"], "ID": [1, 2]}
d2 = {"Role": ["Admin", "Editor"]}
df1 = pandas.DataFrame(d1, index={1, 2})
df2 = pandas.DataFrame(d2, index={1, 2})
df3 = pandas.concat([df1, df2], axis=1)
print('********\n', df3)
出力 :
********
Name ID Role
1 Pankaj 1 Admin
2 Lisa 2 Editor
列に沿った連結は、ソースオブジェクトがオブジェクトの異なる種類のデータを含む場合に意味があります。
4. 連結されたデータフレームのインデックスにキーを割り当てる
d1 = {"Name": ["Pankaj", "Lisa"], "ID": [1, 2]}
d2 = {"Name": "David", "ID": 3}
df1 = pandas.DataFrame(d1, index={1, 2})
df2 = pandas.DataFrame(d2, index={3})
df3 = pandas.concat([df1, df2], keys=["DF1", "DF2"])
print('********\n', df3)
出力 :
********
Name ID
DF1 1 Pankaj 1
2 Lisa 2
DF2 3 David 3
5. 結合におけるソースデータフレームオブジェクトを無視する
d1 = {"Name": ["Pankaj", "Lisa"], "ID": [1, 2]}
d2 = {"Name": "David", "ID": 3}
df1 = pandas.DataFrame(d1, index={10, 20})
df2 = pandas.DataFrame(d2, index={30})
df3 = pandas.concat([df1, df2], ignore_index=True)
print('********\n', df3)
出力 :
********
Name ID
0 Pankaj 1
1 Lisa 2
2 David 3
これは、ソースオブジェクトのインデックスがあまり意味をなさないときに便利です。したがって、それらを無視し、出力DataFrameにデフォルトのインデックスを割り当てることができます。
6. 参考文献
- pandas.concat() API ドキュメント
