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

COLUMN コラム

CategoricalIndex

種別系を扱う際に用意されているIndex Type。通常のSeriesへastypeで変換できる。

from pandas.api.types import CategoricalDtype
df = pd.DataFrame({"A": np.arange(6), "B": list("aabbca")})
df["B"] = df["B"].astype(CategoricalDtype(list("cab")))
df["B"].cat.categories

set_indexでIndexへセット可能

df2 = df.set_index("B")

.loc.ilocは両方とも通常のIndexと同様の動作

df2.loc["a"]

category情報はIndexing時にも保持される

df2.loc["a"].index

.index_sortを用いると、Index作成時に指定した任意の順番でソートされる。今回の場合はcabの順。

df2.sort_index()

.group_by操作を行なった際でも、Index情報は保持される

df2.groupby(level=0).sum()
df2.groupby(level=0).sum().index

.reindexで存在しないカテゴリを増やせたり狭めたりできる。

df3 = pd.DataFrame(
{"A": np.arange(3), "B": pd.Series(list("abc")).astype("category")}
)
df3 = df3.set_index("B")
df3.reindex(["a", "e"])
df3.reindex(["a", "e"]).index
df3.reindex(pd.Categorical(["a", "e"], categories=list("abe")))
df3.reindex(pd.Categorical(["a", "e"], categories=list("abe"))).index

 

 

The following two tabs change content below.

WATANABE REN

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

この記事をシェアする

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