我正在寻找一种方法将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
中结束。
答案 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]