Применение группового режима дважды на панде - PullRequest
0 голосов
/ 11 ноября 2018

Я храню огромный файл .csv во фрейме данных pandas.Структура таблицы примерно такая:

Category       Time      Col1
1              00:00      3
1              01:00      6
1              01:00      10
2              02:00      8
2              02:00      12
2              03:00      6
3              04:00      13
3              05:00      8

Я хочу найти следующее для каждой категории

[суммирование (сумма col1 для каждого времени каждой категории) * (количествоcol1 для каждого времени в каждой категории)] / (общее количество строк) для каждой категории.

Так что в основном я пытаюсь применить группу один раз для категории, а затем в каждой категории, я хочу применить группуснова по времени и вычислите, как указано выше.

Так что для приведенного выше примера мой вывод должен выглядеть как

Category       Col1
1         [3 + (2 * (6 + 10))] / 8
2         [(2 * (8 + 12)) + 6] / 8
3         [13 + 8] / 8

1 Ответ

0 голосов
/ 11 ноября 2018

Используя transform с sum создайте count, затем мы с помощью Seriesgroupby получим результат

s1=df.groupby(['ategory','Time']).Col1.transform('count')
(s1*df.Col1).groupby(df['ategory']).sum()/df.groupby('ategory').Col1.sum()
Out[631]: 
ategory
1    1.842105
2    1.769231
3    1.000000
Name: Col1, dtype: float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...