updated on 2019-09-22
Python 3.7.3
pandas 0.25.1
pandas.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: SeriesまたはDataFrameオブジェクトのシーケンスまたはマッピング dictが渡された場合、ソートされたキーはキー引数として使用されます。ただし、渡されない場合、値が選択されます(以下を参照)。 Noneオブジェクトは、すべてNoneでない限り、静かにドロップされます。その場合、ValueErrorが発生します。 axis : {0/’インデックス’, 1/’カラム’}, デフォルト 0 連結する軸。 join : {‘inner’, ‘outer’}, デフォルト ‘outer’ 他の軸(または軸)のインデックスを処理する方法 join_axes: インデックスオブジェクトのリスト バージョン0.25.0以降廃止されました。 内部/外部セットロジックを実行する代わりに、他のn-1軸に使用する特定のインデックス。置換として連結の前後に.reindex()を使用します。 ignore_index: bool、デフォルトはFalse Trueの場合、連結軸に沿ってインデックス値を使用しないでください。結果の軸には0、…、n-1というラベルが付けられます。これは、連結軸に意味のあるインデックス情報がないオブジェクトを連結する場合に便利です。他の軸のインデックス値は結合で引き続き考慮されることに注意してください。 keys: sequence, デフォルト None 複数のレベルが渡された場合、タプルを含める必要があります。渡されたキーを最外部レベルとして使用して、階層インデックスを構築します。 levels: シーケンスのリスト、デフォルトNone MultiIndexの構築に使用する特定のレベル(一意の値)。それ以外の場合は、キーから推測されます。 names: リスト、デフォルトNone 結果の階層インデックスのレベルの名前。 verify_integrity: bool、デフォルトはFalse 新しい連結軸に重複が含まれているかどうかを確認します。これは、実際のデータ連結に比べて非常に高価になる可能性があります。 sort: bool、デフォルトNone 結合が「外部」であるときに、まだ連結されていない場合、非連結軸をソートします。現在のデフォルトのソートは非推奨であり、今後のバージョンのパンダではソートなしに変更されます。 明示的にsort = Trueを渡して、警告とソートを黙らせます。明示的にsort = Falseを渡すと、警告は表示されず、ソートされませ join = 'inner'の場合、これは効果がありません。これはすでに非連結軸の順序を保持しています。 バージョン0.23.0の新機能。 copy:bool、デフォルトはTrue Falseの場合、データを不必要にコピーしないでください。
オブジェクト、オブジェクトのタイプ インデックス(軸= 0)に沿ってすべてのシリーズを連結すると、シリーズが返されます。 objsに少なくとも1つのDataFrameが含まれている場合、DataFrameが返されます。列(axis = 1)に沿って連結すると、DataFrameが返されます。
2つのSeriesの結合
>>> s1 = pd.Series(['a', 'b']) >>> s2 = pd.Series(['c', 'd']) >>> pd.concat([s1, s2]) 0 a 1 b 0 c 1 d dtype: object
ignore_indexオプションをTrueに設定して、既存のインデックスをクリアし、結果でリセットします。
>>> pd.concat([s1, s2], ignore_index=True) 0 a 1 b 2 c 3 d dtype: object
キーオプションを使用して、データの最も外側のレベルに階層インデックスを追加します。
>>> pd.concat([s1, s2], keys=['s1', 's2']) s1 0 a 1 b s2 0 c 1 d dtype: object
namesオプションを使用して、作成したインデックスキーにラベルを付けます。
>>> pd.concat([s1, s2], keys=['s1', 's2'], ... names=['Series name', 'Row ID']) Series name Row ID s1 0 a 1 b s2 0 c 1 d dtype: object
2つのDataFrameオブジェクトを同一の列と組み合わせます。
>>> df1 = pd.DataFrame([['a', 1], ['b', 2]], ... columns=['letter', 'number']) >>> df1 letter number 0 a 1 1 b 2 >>> df2 = pd.DataFrame([['c', 3], ['d', 4]], ... columns=['letter', 'number']) >>> df2 letter number 0 c 3 1 d 4 >>> pd.concat([df1, df2]) letter number 0 a 1 1 b 2 0 c 3 1 d 4
重複する列を持つDataFrameオブジェクトを組み合わせて、すべてを返します。交差点の外側の列にはNaN値が入力されます。
>>> df3 = pd.DataFrame([['c', 3, 'cat'], ['d', 4, 'dog']], ... columns=['letter', 'number', 'animal']) >>> df3 letter number animal 0 c 3 cat 1 d 4 dog >>> pd.concat([df1, df3], sort=False) letter number animal 0 a 1 NaN 1 b 2 NaN 0 c 3 cat 1 d 4 dog
重複する列を持つDataFrameオブジェクトを結合し、innerをjoinキーワード引数に渡すことで共有されているオブジェクトのみを返します。
>>> pd.concat([df1, df3], join="inner") letter number 0 a 1 1 b 2 0 c 3 1 d 4
axis = 1を渡すことにより、DataFrameオブジェクトをx軸に沿って水平に結合します。
>>> df4 = pd.DataFrame([['bird', 'polly'], ['monkey', 'george']], ... columns=['animal', 'name']) >>> pd.concat([df1, df4], axis=1) letter number animal name 0 a 1 bird polly 1 b 2 monkey george
verify_integrityオプションを使用して、重複するインデックス値が結果に含まれないようにします。
>>> df5 = pd.DataFrame([1], index=['a']) >>> df5 0 a 1 >>> df6 = pd.DataFrame([2], index=['a']) >>> df6 0 a 2 >>> pd.concat([df5, df6], verify_integrity=True) Traceback (most recent call last): ... ValueError: Indexes have overlapping values: ['a']
なお、verify_integrityはデフォルトはFalse
>>> pd.concat([df5, df6]) 0 a 1 a 2
本記事は pandas0.25.1のドキュメント の中のconcat関数を日本語でまとめたものです。