如何在pandas中取消分类列

时间:2018-01-23 21:45:30

标签: python pandas dataframe

我在Pandas中有一个Dataframe。出于排序目的,使用以下命令创建其中一列:

 df['segVar'] = df['segVar'].astype('category', categories=segVars, ordered=True)

在正常操作中,将其保存到带to_csv的csv,然后在稍后阶段读入。在此模式下,一旦它被读入,segVar就不是一个类别。这很好,我想要的功能。

但是,出于单元测试的目的,我在不将其保存到文件的情况下执行所有操作,因此segVar列仍然是一个类别。这会破坏代码,因为我执行df['segVar'].unique()之类的操作,而这些操作并不适用于分类。

基本上,我想不要更改列,除了不是分类,我希望它是原始值。

1 个答案:

答案 0 :(得分:2)

如果您从这样的事情开始 -

0    a
1    b
2    c
3    a
4    c
5    c
6    b
dtype: category
Categories (3, object): [a < b < c]

然后s.unique()对我来说是v0.22的分类列 -

s.unique()

[a, b, c]
Categories (3, object): [a < b < c]

这是一个pandas.core.categorical.Categorical对象。

或者,

s.unique().tolist()
['a', 'b', 'c']

或者,如果这不起作用,您只需转换为str列,您最终会获得相同的内容。

s.astype(str).unique()
array(['a', 'b', 'c'], dtype=object)

在这种情况下,您会收到一个数组作为结果。