python - 如何将分类索引更新为 Pandas DataFrame (Python) 中使用的类别?

标签 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)

以上结果:

['food', 'drink']
Categories (2, object): ['food', 'drink']
Index(['drink', 'food', 'kebab'], dtype='object')

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

最佳答案

如果在选择 !="kabab" 之后添加此命令,则可以解决问题:

df["category"].cat.remove_unused_categories(inplace=True)

关于python - 如何将分类索引更新为 Pandas DataFrame (Python) 中使用的类别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66589053/

相关文章:

python - 具有平均时间的 Pandas 数据透视表

python - 使用 python 将 CSV 转换为 AVRO

python - 如何重新采样时间增量?

python - 如何在Python中获取值的组合?

python - 如何使用 Python 下载文件

python - Pandas DataFrame 合并求和列

python - Pandas:获取独特的元素然后合并

python - 如何在 Pandas 数据帧切片中使用 apply 来设置多列的值

python - 从数据透视表 reshape /转换 Pandas 数据框

python - 如何在不使用 csv 模块的情况下提取 csv 文件的内容并将其放入 dict 文件类型中。 [Python]