首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >追加pandas.core.categorical.Categories

追加pandas.core.categorical.Categories
EN

Stack Overflow用户
提问于 2018-05-31 12:41:30
回答 2查看 64关注 0票数 0

我正在尝试对每个第n个类别进行子集,然后添加最后一个类别。

下面是一个示例:

1)制作类别

代码语言:javascript
复制
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)设置类别子集

代码语言:javascript
复制
sub_c = c[0::4]

这就是问题所在,我想把最后一个类别附加到sub_c,比如:

sub_c.append(c[-1]),但我得到了错误:'Categorical' object has no attribute append.

那么,我该如何将这个类别添加到结尾呢?

EN

回答 2

Stack Overflow用户

发布于 2018-05-31 12:58:27

您可以选择最后一个类别和其他类别:

代码语言:javascript
复制
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]], ...

另一种选择是准备一个分类代码列表:

代码语言:javascript
复制
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()来删除未使用的类别。

票数 0
EN

Stack Overflow用户

发布于 2018-05-31 13:00:42

出现此错误是因为append是list的属性,而不是分类对象。

因此,要修复此错误,您需要通过执行以下操作将pandas.core.categorical.Categories转换为列表类型

代码语言:javascript
复制
sub_c = sub_c.tolist()

然后

代码语言:javascript
复制
sub_c.append(c.tolist()[-1])

我会将最后一个元素放入sub_c,但现在sub_c是一个列表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50616762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档