PandasのSeriesの要素の追加について

Python,イメージ

AI実装検定のご案内

PandasのSeriesは、固定長のラベル付き一次元配列です。

そのため、Pythonのリストのように.append()メソッドで気軽に要素を追加することはできません。

しかし、いくつかの方法を使えば「Seriesに要素を追加したような新しいSeriesを作る」ことが可能です。

本記事では、その主要な方法と注意点をわかりやすく解説します。

目次

まずは基本:Seriesの定義

import pandas as pd

s = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
print(s)

出力

a    10  
b    20  
c    30  
dtype: int64

Seriesに要素を追加する方法3選

pd.concat() を使う(最も推奨される方法)

new_elem = pd.Series([40], index=['d'])
new_s = pd.concat([s, new_elem])
print(new_s)

出力

a    10  
b    20  
c    30  
d    40  
dtype: int64

解説

  • pd.concat()は複数のSeriesを連結する関数です。
  • 非破壊的:元のsは変更されません。
  • インデックスが重複していなければ、予測可能で安定した動作をします。
  • 複数要素を一度に追加するのにも最適です。

インデックスを指定して直接代入する(簡便な方法)

s['d'] = 40
print(s)

出力

a    10  
b    20  
c    30  
d    40  
dtype: int64

解説

  • 存在しないインデックス 'd' を指定して値を代入すると、Seriesに新しい要素が追加されます。
  • 破壊的操作:元のsオブジェクトが直接変更されます。
  • 要素の順序は保証されません(Pythonの辞書的な挙動を取ることがあります)。

任意の位置に要素を「挿入」する(疑似的な insert)

Pythonのリストのように.insert()メソッドは用意されていませんが、次のような手法で「任意の位置に要素を追加」できます。

例:インデックス 'x' の要素を「2番目の前」に挿入したい

new_elem = pd.Series([15], index=['x'])

# 0番目までの要素 + 追加要素 + 1番目以降の要素を連結
new_s = pd.concat([s.iloc[:1], new_elem, s.iloc[1:]])
print(new_s)

出力

a    10
x    15
b    20
c    30
d    40
dtype: int64

ポイント

  • s.iloc[:1] で最初の1要素(インデックス 'a')を切り出し。
  • s.iloc[1:] で残りの部分(インデックス 'b' 以降)を切り出し。
  • このようにして、任意の位置に要素を差し込むことが可能になります。

まとめ:Seriesに要素を追加する方法比較表

方法特徴元のSeriesに影響要素順の制御推奨度
pd.concat()柔軟で高速。複数要素の追加も可非破壊的任意に制御可
s['new_key'] = value簡単・直感的。小規模な追加に便利破壊的順序は保証されない
Series.append()書きやすいが非推奨(廃止予定)非破壊的任意×
iloc + pd.concat()特定の位置に挿入したいときに便利非破壊的明確に制御可

実践ポイント

  • 確実性・将来性重視なら pd.concat() を使うのがベスト
  • 簡単に済ませたいときは s['key'] = value でもOK
  • 順序が重要なら iloc+concat を活用

以上、PandasのSeriesの要素の追加についてでした。

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

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