如何在Pandas中创建具有自己级别的分类?

时间:2012-10-02 21:39:17

标签: python pandas

我正在阅读CSV,我想按照自己的顺序将其中一列列为分类。我怎么做?这三个标签是“读”,“写”和“混合”。以下是一些不起作用的事情:

Categorical(my_csv.rw, ['read', 'write', 'mixed'])
    ValueError: invalid literal for long() with base 10: 'mixed'

Categorical(my_csv.rw, Index(['read', 'write', 'mixed']))
    ValueError: invalid literal for long() with base 10: 'mixed'

Categorical(['read', 'mixed', 'write'], Index(['read', 'write', 'mixed']))
    ValueError: invalid literal for long() with base 10: 'mixed'

Categorical.from_array(['read', 'mixed', 'write']) # Levels in wrong order

那么,我该怎么做呢?

2 个答案:

答案 0 :(得分:0)

我认为这些级别是由标签订购的:

In [38]: a.levels
Out[38]: Index([mixed, read, write], dtype=object)

In [39]: a.labels
Out[39]: array([1, 0, 2])

答案 1 :(得分:0)

分类需要一个整数数组和一个级别数组:

In [14]: Categorical([0, 1, 2], Index(['read', 'write', 'mixed']))
Out[14]: 
Categorical: 
array([read, write, mixed], dtype=object)
Levels (3): Index([read, write, mixed], dtype=object)

我不相信它会进行太多的错误检查(因为通常它们是由其他一些函数创建的)但是这可以改变。