1. ホーム
  2. python

[解決済み] pandasシリーズで.ixのインデックスを作成するポイントとは?

2022-02-07 16:30:02

質問

Seriesオブジェクト(仮にsとします)に対して、pandasは3種類のアドレッシングを提供します。

s.iloc[] -- 整数位置のアドレス指定に使用します。

s.loc[] -- インデックスラベルアドレッシング用。

s.ix[] -- 整数位置とラベルアドレッシングのハイブリッドです。

また、pandasオブジェクトはixアドレッシングを直接実行します。

# play data ...
import string
idx = [i for i in string.uppercase] # A, B, C .. Z
t = pd.Series(range(26), index=idx) # 0, 1, 2 .. 25

# examples ...
t[0]              # --> 0
t['A']            # --> 0
t[['A','M']]      # --> [0, 12]
t['A':'D']        # --> [0, 1, 2, 3]
t.iloc[25]        # --> 25
t.loc['Z']        # --> 25
t.loc[['A','Z']]  # --> [0, 25]
t.ix['A':'C']     # --> [0, 1, 2]
t.ix[0:2]         # --> [0, 1]

そこで質問ですが、.ix方式でのインデックス作成に意味はあるのでしょうか?私は何か重要なことを見逃しているのでしょうか?

備考 : Pandas v0.20時点のものです。 .ix インデクサは非推奨です の代わりに .iloc / .loc .

解決方法は?

備考 : Pandas v0.20時点のものです。 .ix インデクサは非推奨です の代わりに .iloc / .loc .

については Series , .ix は、以下のものと同等です。 [] は、その getitem の構文があります。 .ix/.loc は多軸インデックスをサポートしているが、これはシリーズには関係ない(1軸しかない)ので、互換性のために存在する。

DataFrame(...).ix[row_indexer,column_indexer]
Series(...).ix[row_indexer]

.ix は、ラベルや位置(整数)インデックスを提示されたときに、何が欲しいかを考えようとする「古い」方法です。このため .loc/.iloc は0.11で導入され、ユーザーによるインデックスの選択ができるようになりました。