通过重命名合并 pandas 个分类系列

Merging pandas categorical Series with renaming

我正在寻找一种方法将 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.

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

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',实际上这将以 'merge' 结束:

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]