合并pandas分类系列与重命名

时间:2015-03-03 15:55:43

标签: python python-3.x pandas categorical-data

我正在寻找一种方法将pandas.Series的一个对象的类别合并到另一个对象的类别。

import pandas as pd
from pandas import Series, Categorical

N = Series(["a","b","c","a"], dtype="category", name = "NEW_TEST")
N1 = N.copy()
N2 = N.copy()

作品

N1.cat.categories = ['AA', 'BB', 'CC']

引发错误 ValueError: Categorical categories must be unique

N2.cat.categories = ['AA', 'AA', 'CC'] 

我想重命名合并类别。因此,类别b中的所有值都将在类别AA中结束。

1 个答案:

答案 0 :(得分:3)

这样做的一种方法就是将类别分配给您要重命名的类别系列中的所有元素:

In [59]: N
Out[59]:
0    a
1    b
2    c
3    a
Name: NEW_TEST, dtype: category
Categories (3, object): [a < b < c]

In [60]: N[N=='b'] = 'a'

In [61]: N
Out[61]:
0    a
1    a
2    c
3    a
Name: NEW_TEST, dtype: category
Categories (3, object): [a < b < c]

现在,所有类别为“b”的元素都被分配了类别“a”。如果你现在删除类别'b',那么在实践中最终会出现'合并':

In [62]: N.cat.remove_unused_categories()
Out[62]:
0    a
1    a
2    c
3    a
dtype: category
Categories (2, object): [a < c]

In [63]: N.cat.remove_categories(['b'])
Out[63]:
0    a
1    a
2    c
3    a
dtype: category
Categories (2, object): [a < c]