【问题标题】:Merging pandas categorical Series with renaming通过重命名合并熊猫分类系列
【发布时间】:2015-03-03 15:55:43
【问题描述】:

我正在寻找一种将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 类别。

【问题讨论】:

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


    【解决方案1】:

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

    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]
    

    【讨论】:

    • 可能还想提一下.rename_categories
    • @Jeff 你怎么能用重命名呢?正如.rename_categories(['a', 'a', 'c']) 确实提出他们应该是独一无二的
    • In [25]: N.cat.rename_categories(['A','B','C']) Out[25]: 0 A 1 B 2 C 3 A dtype: category Categories (3、对象):[A
    • 但这只是直接重命名。我猜你在这里没有这样做。
    • 是的,确实,它正在重命名为其他类别之一
    猜你喜欢
    • 2021-01-16
    • 2020-01-23
    • 2021-08-15
    • 2022-11-29
    • 2021-12-07
    • 2018-01-08
    • 2014-10-20
    • 1970-01-01
    相关资源
    最近更新 更多