如何将分类索引更新为 Pandas 中使用的类别

Áng*_*gel 2 python pandas

当我使用分类索引创建DataFrame并从一个类别中删除所有行时,CategoricalIndex不会使用唯一存在的类别进行更新,这会在执行pd.merge_asof.

可重现的例子:

import pandas as pd
info = {"category":["food", "drink", "kebab"],
        "price":[1, 2, 100000]}
df = pd.DataFrame(info)
df = df.astype({"category":"category",
                               "price":"int32"})
df = df[df["category"] != "kebab"]
print(df["category"].unique())
print(df["category"].cat.categories)
Run Code Online (Sandbox Code Playgroud)

上面的结果:

['food', 'drink']
Categories (2, object): ['food', 'drink']
Index(['drink', 'food', 'kebab'], dtype='object')
Run Code Online (Sandbox Code Playgroud)

正如您所看到的“kebab”类别不再存在,但是分类索引仍然将其保存为类别,如何从分类索引中删除未使用的类别?

小智 6

如果您在选择后添加该命令,则该命令将解决该问题!="kabab"

df["category"].cat.remove_unused_categories(inplace=True)
Run Code Online (Sandbox Code Playgroud)