PythonのPandasのseriesの結合について

Python,イメージ

AI実装検定のご案内

PythonのPandasライブラリでは、Seriesオブジェクトを結合する方法がいくつかあります。

用途に応じて使い分けることが重要です。

以下では、基本的な結合方法から、インデックスやデータの整合性に配慮した高度な方法まで、詳しく解説します。

目次

そもそもSeriesとは?

SeriesはPandasの基本的なデータ構造のひとつで、1次元のラベル付き配列です。

例えば

import pandas as pd

s1 = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
print(s1)
a    10
b    20
c    30
dtype: int64

結合(連結・マージ)の方法まとめ

方法概要
pd.concat()Series同士を縦や横に結合する汎用的な関数複数Seriesをまとめる
append()pd.concatの簡易版(非推奨・v2.0以降廃止)s1.append(s2)
combine_first()片方の欠損値をもう片方の値で補完補完やマージに便利
add(), sub(), mul() など要素ごとの算術結合(インデックスに依存)s1 + s2 でも可
join()データフレームのような方法でSeries同士を結合通常はDataFrame向け

pd.concat() によるSeriesの結合(基本)

縦に結合(デフォルト)

s1 = pd.Series([1, 2], index=['a', 'b'])
s2 = pd.Series([3, 4], index=['c', 'd'])

result = pd.concat([s1, s2])
print(result)
a    1
b    2
c    3
d    4
dtype: int64

複数のSeriesを一つのSeriesとして“縦に”つなぎます。

横に結合(DataFrameになる)

result = pd.concat([s1, s2], axis=1)
print(result)
     0    1
a  1.0  NaN
b  2.0  NaN
c  NaN  3.0
d  NaN  4.0

axis=1 を指定すると列方向に結合され、DataFrameになります。インデックスが自動で揃えられます。

combine_first() による結合(補完的マージ)

s1 = pd.Series([1, None, 3], index=['a', 'b', 'c'])
s2 = pd.Series([10, 20, 30], index=['b', 'c', 'd'])

result = s1.combine_first(s2)
print(result)
a     1.0
b    10.0
c     3.0
d    30.0
dtype: float64

s1 の値が優先され、NaN の部分に s2 の値が補完されます。
欠損補完やマージに便利な方法です。

要素ごとの算術的な結合

s1 = pd.Series([1, 2, 3], index=['a', 'b', 'c'])
s2 = pd.Series([4, 5, 6], index=['b', 'c', 'd'])

result = s1 + s2
print(result)
a    NaN
b    6.0
c    8.0
d    NaN
dtype: float64

同じインデックス同士の値だけが計算され、それ以外は NaN になります。

他にも .add(), .sub(), .mul(), .div() といったメソッドがあります。

s1.add(s2, fill_value=0)

これは、NaN の代わりに 0 を使って計算する例です。

SeriesをDataFrameとして結合する方法(応用)

df = pd.concat([s1, s2], axis=1)
df.columns = ['S1', 'S2']
print(df)
     S1   S2
a   1.0  NaN
b   2.0  4.0
c   3.0  5.0
d   NaN  6.0

よくあるエラーと注意点

状況エラー・問題解決法
インデックスが重複している結果に重複が生じるignore_index=True を使うか、ユニークにする
axis=1 で結合したのに期待と違うSeriesが列として扱われるDataFrame化を意識すること

まとめ

方法用途特徴
pd.concat()複数Seriesの結合最も汎用的・おすすめ
combine_first()補完付きのマージ欠損データの補完に最適
s1 + s2要素同士の演算インデックスで整合性を取る
append()簡易結合(非推奨)concatを使うべき

以上、PythonのPandasのseriesの結合についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次