Добавить pandas.core.categorical.Categories - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь создать подмножество для каждой 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.

Итак, как мне добавить эту категорию в конец?

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

У вас есть эта ошибка, потому что append является атрибутом списка, а не категориальным объектом.

Итак, чтобы исправить эту ошибку, вам нужно преобразовать pandas.core.categorical.Categories в тип списка, выполнив

sub_c = sub_c.tolist()

Тогда

sub_c.append(c.tolist()[-1])

поместит последний элемент в sub_c, но теперь sub_c - это список.

0 голосов
/ 31 мая 2018

Вы можете выбрать последнюю категорию вместе с другими категориями:

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() для удаления неиспользуемых категорий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...