重置 Pandas 中分类索引的类别

use*_*424 3 pandas

我有一个数据框,其中一列是分类的。

我删除所有具有一个类别的行。

如何确保生成的数据框只有那些存在的类别,并且不会将已删除的类别保留在其索引中?

Sco*_*ton 5

df = pd.DataFrame({'color':np.random.choice(['Blue','Green','Brown','Red'], 50)})

df.color = df.color.astype('category')

df.color.head()
Run Code Online (Sandbox Code Playgroud)

输出:

0     Blue
1    Green
2     Blue
3    Green
4    Brown
Name: color, dtype: category
Categories (4, object): [Blue, Brown, Green, Red]
Run Code Online (Sandbox Code Playgroud)

从数据框和类别中删除 Brown。

df = df.query('color != "Brown"')

df.color = df.color.cat.remove_categories('Brown')

df.color.head()
Run Code Online (Sandbox Code Playgroud)

输出:

0     Blue
1    Green
2     Blue
3    Green
7      Red
Name: color, dtype: category
Categories (3, object): [Blue, Green, Red]
Run Code Online (Sandbox Code Playgroud)