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

COLUMN コラム

Basic Index

公式ドキュメントはこちら
https://pandas.pydata.org/pandas-docs/stable/user_guide/advanced.html#basic-indexing-on-axis-with-multiindex

通常のDataframeの列指定のように df[“label”] とすることで、該当するMultiIndexのレベルの階層を取得することが出来る。

サンプル:

iterables = [["bar", "baz", "foo", "qux"], ["one", "two"]]
index = pd.MultiIndex.from_product(iterables, names=["first", "second"])
df = pd.DataFrame(np.random.randn(3, 8), index=["A", "B", "C"], columns=index)
df["bar"]
df["bar", "one"]
df["bar"]["one"]

スライスを用いてDataframeから抽出しても、実行パフォーマンスを保持するため、MultiIndexのレベルの状態は保持されている。

サンプル:

df.columns.levels
df[["foo","qux"]].columns.levels # sliceしているが同様の結果になる
df[["foo", "qux"]].columns.get_level_values(0) # sliceした結果からのみ、levelの内容を確認したい場合

同様な階層構造を持つMultiIndexの計算。(正直、イマイチ分かりづらい)

サンプル:

s = pd.Series(np.random.randn(8), index=index)
s + s[:-2] # MultiIndexのSlice
s + s[::2]
The following two tabs change content below.

WATANABE REN

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

最新記事 by WATANABE REN (全て見る)

この記事をシェアする

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