一般社団法人 全国個人事業主支援協会

COLUMN コラム

通常のIndexと同様sort_indexを用いてソートが可能

 

import random
random.shuffle(tuples)
s = pd.Series(np.random.randn(8), index=pd.MultiIndex.from_tuples(tuples))

s.sort_index()
s.sort_index(level=0)
s.sort_index(level=1)

軸ラベル名を設定し、指定でのソートが出来る

s.index.set_names(["L1", "L2"], inplace=True)
s.sort_index(level="L1")
s.sort_index(level="L2")
df.T.sort_index(level=1, axis=1)

 

ソート済みでない場合にIndexingでの抽出を行うと、パフォーマンスが劣化(Warningも発生)する。またViewではなくCopyでの値返却になる

 

dfm = pd.DataFrame(
{"jim": [0, 0, 1, 1], "joe": ["x", "x", "z", "y"], "jolie": np.random.rand(4)}
)
dfm = dfm.set_index(["jim", "joe"])
dfm.loc[(1, 'z')] # この状態だとWarningする
dfm.loc[(0, 'y'):(1, 'z')]

 

is_monotonic_increasingメソッドを用いることでソート済みかどうかが確認可能

dfm.index.is_monotonic_increasing
dfm = dfm.sort_index()
dfm.index.is_monotonic_increasing
dfm.loc[(0, "y"):(1, "z")] # この状態だとIndexingが正常に効く
The following two tabs change content below.

WATANABE REN

千葉県在住のエンジニアです。最近はPythonやってます。

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア