我尝试对每个第n个类别进行子集化,然后追加最后一个类别。
以下是一个例子:
1)制作类别
import pandas as pd
import numpy as np
a = np.arange(0, 10, 1)
b = np.arange(0, 10, 1)
c = pd.cut(x = b.tolist(), bins = a, right = True, include_lowest = True)
2)设置类别
sub_c = c[0::4]
这就是麻烦,我想将最后一个类别附加到sub_c
,例如:
sub_c.append(c[-1])
但我收到错误:'Categorical' object has no attribute append.
那么我该如何添加这个类别呢?
答案 0 :(得分:0)
您可以选择最后一个类别以及其他类别:
sub_c = c[list(range(0, c.size, 4)) + [-1]].remove_unused_categories()
#[(-0.001, 1.0], (3.0, 4.0], (7.0, 8.0], (8.0, 9.0]], ...
另一种选择是准备一份分类代码:
codes = np.concatenate([c[0::4].codes, c[[-1]].codes])
sub_c = c.from_codes(codes, c.categories).remove_unused_categories()
#[(-0.001, 1.0], (3.0, 4.0], (7.0, 8.0], (8.0, 9.0]], ....
不要忘记致电.remove_unused_categories()
删除未使用的类别。
答案 1 :(得分:0)
您有此错误,因为append是list的属性,而不是Categorical对象。
因此,要修复此错误,您需要转换您的pandas.core.categorical.Categories 通过执行
列出类型sub_c = sub_c.tolist()
然后
sub_c.append(c.tolist()[-1])
将最后一个元素放入sub_c,但现在sub_c是一个列表。