当我使用分类索引创建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)