
5.2
pandas
の重要な機能
171
5.2.8
重複したラベルを持つ軸のインデックス
ここまで見てきた例では、すべてのインデックスは一意なラベル(インデックス値)を持っていました。
reindex
のように、
pandas
の多くの関数ではインデックスのラベルが一意であることを要求しますが、
インデックスのラベル自体は一意である必要はありません。重複したインデックスを持つ小さなシリー
ズを考えてみましょう。
In [222]: obj = pd.Series(range(5), index=['a', 'a', 'b', 'b', 'c'])
In [223]: obj
Out[223]:
a 0
a 1
b 2
b 3
c 4
dtype: int64
インデックスの
is_unique
属性で、インデックスのラベルが一意かどうかを確認することができます。
In [224]: obj.index.is_unique
Out[224]: False
データの選択結果は、インデックスに重複があるときに振る舞いが変わる主な点です。重複したイ
ンデックスがある場合にはシリーズが戻されますが、重複がない場合にはスカラー値が戻されます。
In [225]: obj['a']
Out[225]:
a 0
a 1
dtype: int64
In [226]: obj['c']
Out[226]: 4
これによって、あなたのコードは複雑になるかもしれません。なぜなら、インデックス参照の結果で
得られるデータの型が、ラベルの重複の有無によって変わるから