pandas групповых прогонов в категориальной серии - PullRequest
2 голосов
/ 09 июля 2020

Для серии как:

import numpy as np
import pandas as pd

N = 18
color = np.repeat(list("ABCABC"), 3)
ss = pd.Series(color, index=pd.date_range("2020-01-01", periods=N,
                                          freq="10s", tz="UTC"),
               dtype="category")

>>> print(ss)
2020-01-01 00:00:00+00:00    A
2020-01-01 00:00:10+00:00    A
2020-01-01 00:00:20+00:00    A
2020-01-01 00:00:30+00:00    B
2020-01-01 00:00:40+00:00    B
2020-01-01 00:00:50+00:00    B
2020-01-01 00:01:00+00:00    C
2020-01-01 00:01:10+00:00    C
2020-01-01 00:01:20+00:00    C
2020-01-01 00:01:30+00:00    A
2020-01-01 00:01:40+00:00    A
2020-01-01 00:01:50+00:00    A
2020-01-01 00:02:00+00:00    B
2020-01-01 00:02:10+00:00    B
2020-01-01 00:02:20+00:00    B
2020-01-01 00:02:30+00:00    C
2020-01-01 00:02:40+00:00    C
2020-01-01 00:02:50+00:00    C
Freq: 10S, dtype: category
Categories (3, object): [A, B, C]

Как я могу сгруппировать ее так, чтобы каждый блок следующего уровня категории был отдельной группой? В примере это означает, что в итоге останется 6 групп.

1 Ответ

2 голосов
/ 09 июля 2020

Используя shift с cumsum, создайте подключ

m = ss.ne(ss.shift()).cumsum()
ss.groupby(m).ngroups
6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...