Разделите Dataframe на группы, затем рассчитайте Cumprod по группам - PullRequest
0 голосов
/ 30 октября 2018

Я хочу разбить на Dataframe n групп, равномерно по каждой группе размера:

group_size = math.ceil(len(df)/n)

Тогда я хочу вычислить cumprod для каждой группы.

Например:

 Val - Group - Cumprod
  1  -   0   -    1
  3  -   0   -    3
  5  -   0   -    15
  2  -   1   -    2
  3  -   1   -    6
  ..     ..       ..

Ценю любую помощь по возможным подходам. Спасибо!

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Использование Numpy для определения массива группировки

#            Number of Groups you want
#                        ? 
a = np.arange(len(df)) * 2 // len(df)

df.assign(Cumprod=df.groupby(a).Val.cumprod())

   Val  Group  Cumprod
0    1      0        1
1    3      0        3
2    5      0       15
3    2      1        2
4    3      1        6
0 голосов
/ 30 октября 2018

Используйте qcut и cumprod:

n = 2
df['cut'] = pd.qcut(df.index,n,labels=range(n))
df['cumprod'] = df.groupby('cut')['values'].cumprod()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...