Dragon Arrow written by Tatsuya Nakaji, all rights reserved animated-dragon-image-0164

pandas concat関数 ドキュメント

updated on 2019-09-22

イメージ

pandas concat関数


Python 3.7.3

pandas 0.25.1


pandas.concat


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関数を日本語でまとめたものです。