我在Pandas中有一个Dataframe。出于排序目的,使用以下命令创建其中一列:
df['segVar'] = df['segVar'].astype('category', categories=segVars, ordered=True)
在正常操作中,将其保存到带to_csv
的csv,然后在稍后阶段读入。在此模式下,一旦它被读入,segVar
就不是一个类别。这很好,我想要的功能。
但是,出于单元测试的目的,我在不将其保存到文件的情况下执行所有操作,因此segVar
列仍然是一个类别。这会破坏代码,因为我执行df['segVar'].unique()
之类的操作,而这些操作并不适用于分类。
基本上,我想不要更改列,除了不是分类,我希望它是原始值。
答案 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)
在这种情况下,您会收到一个数组作为结果。