当我创建一个带有分类索引的 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/